отправить массив JSON в качестве параметра сообщения от Android

1

Мне нужно отправить json-массив как paramater через почтовый метод из android... и получить jsonarray как ответ..

что должно быть преобразованием ниже указанного запроса в java..??

curl -H "X-OpenSRF-service: open-ils.search" --data 'osrf-msg=[{"__p" : {"threadTrace" : 0, "payload" : { "__c" : "osrfMethod","__p" : { "params" :"30007004981493","method" : "open-ils.search.biblio.find_by_barcode"}},"type" : "REQUEST","locale" : "en-US"},"__c" : "osrfMessage"} ]' http://localhost/osrf-http-translator

Я сделал это вот так.

    HttpParams httpParams = new BasicHttpParams();

    HttpClient client = new DefaultHttpClient(httpParams);

    HttpPost httpost = new HttpPost("http://"+hostname+"/osrf-http-translator");
   // httpost.setHeader("Accept", "application/json");
 //    httpost.setHeader("Content-type", "application/json");
    httpost.setHeader("X-OpenSRF-service", "open-ils.search");
    System.out.println("2");
    JSONObject data = new JSONObject();
    JSONObject _p = new JSONObject();
    JSONObject _p1 = new JSONObject();
    JSONObject osrfmsg = new JSONObject();
    HttpResponse response = null;
    try {
        _p.put("params",bookid);//"30007004981493"
        _p.put("method","open-ils.search.biblio.find_by_barcode");
        JSONObject payload = new JSONObject();
        payload.put("_c", "osrfMethod");
        payload.put("_p", _p);
        _p1.put("threadTrace",0);
        _p1.put("payload", payload);
        _p1.put("locale","en-US" );
        _p1.put("type", "REQUEST");
        osrfmsg.put("_c","osrfMessage");
        osrfmsg.put("_p",_p1);
        data.put("osrf-msg",osrfmsg);   


    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

          JSONArray osrfmsg2=new JSONArray();
    osrfmsg2.put(osrfmsg);

        httpost.getParams().setParameter("osrf-msg",osrfmsg2);
   response = client.execute(httpost);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));

StringBuilder builder = new StringBuilder();
        for (String line = null; (line = reader.readLine()) != null;) 
        {     builder.append(line).append("\n"); } 

        JSONTokener tokener = new JSONTokener(builder.toString());
        JSONArray finalResult = new JSONArray(tokener); 

но я не могу получить json-массив...

есть ли какой-либо другой метод?

Теги:
curl
httpclient

1 ответ

0

Ну, вы создаете JSONObject в качестве параметра,

попробуйте использовать

JSONArray как ваш объект полезной нагрузки.

 JSONArray payload = new JSONArray();

И работа с коллекцией. Надеюсь, это поможет. Также ваш тип контекста, который вы отправляете, не является JSON, он закодирован в форме

  • 0
    где он? @chirag?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню