2016-04-06 4 views
0

Я использую Volley для передачи данных между устройством Android и веб-сервером.Android Volley POST Json to Server

Я нашел проблему с отправкой на сервер списка данных.

Например, мой класс будет генерировать набор данных, как это:

{ 
    "1": { 
    "1_aID": "5", 
    "2_aID": "5", 
    "3_aID": "5", 
    "4_aID": "5" 
    }, 
    "2": { 
    "1_bID": "3", 
    "2_bID": "3", 
    "3_bID": "3" 
    }, 
    "3": { 
    "1_cID": "4" 
    } 
} 

Как я могу отправить эти данные на сервер?

Я нашел некоторое руководство по отправке данных на сервер. Он должен использовать hashmap. Любое лучшее решение для обработки этого случая?

+1

Ну в моем случае, я преобразовал массив в строку, а затем отправить данные на сервере у меня есть такие данные, как это мое приложение [{"color": "yellow"}, {"color": "green"}] –

+0

В чем проблема, с которой вы столкнулись? –

+0

Вы класс JsonRequest? – Jois

ответ

1
  1. Сделать запрос залпа как сильфон, который принимает метод как POST/GET, url, response & error слушателя. И для отправки вашего json override getBody() метод, в котором передать json, который вы хотите отправить.
  2. Сделать заявку RequestQueue &. Вы можете начать его вызова start()

Попробуйте это:

// Instantiate the RequestQueue. 
    RequestQueue queue = Volley.newRequestQueue(this); 
    String url ="http://www.google.com"; 

    // Request a string response from the provided URL. 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        // your response 

       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      // error 
     } 
    }){ 
     @Override 
     public byte[] getBody() throws AuthFailureError { 
      String your_string_json = ; // put your json 
      return your_string_json.getBytes(); 
     } 
    }; 
    // Add the request to the RequestQueue. 
    queue.add(stringRequest); 
    requestQueue.start(); 

Для получения дополнительной информации смthis

+0

Если вы используете php, не забывайте, что этот JSON будет храниться в 'php: // input', а не в' $ _REQUEST'. Получите его как '$ obj = json_decode (file_get_contents (" php: // input "));' –

1

Попробуйте

JSONObject rootObj = new JSONObject(); 
JSONObject oneObject = new JSONObject(); 
oneObject.put("1_aID","5"); 
... 
... 
JSONObject threeObject = new JSONObject(); 
oneObject.put("1_cID","4"); 
rootObj("1",oneObject); 
... 
... 
rootObj("3",threeObject); 

new JsonObjectRequest(Request.Method.POST, 
       url, 
       rootObj.toString(), 
responselistner, 
errorlistner);