2015-05-14 3 views
1

Я пытаюсь отправить запрос на сообщение с волейболом без успеха.Сообщение JsonObject с Volley

lib работает правильно, и мне удается отправить некоторые строковые запросы, но сообщение с JsonObject не работает.

String urlJsonReq = "https://api.parse.com/1/classes/GameScore"; 
    String tag_json_obj = "tag_json"; 

    JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.POST, 
      urlJsonReq, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        Log.d("MyApp", response.toString()); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d("MyApp", "Error: " + error.getMessage()); 
        // hide the progress dialog 
       } 
    }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("value1", "testValue1"); 
      params.put("value2", "testValue2"); 
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("X-Parse-REST-API-Key", "xxxxxxxxxxxx"); 
      headers.put("X-Parse-Application-Id", "xxxxxxxxxxx"); 
      return headers; 
     } 

     @Override 
     public String getBodyContentType() { 
      return "application/json"; 
     } 
    }; 

Я продолжаю получать сообщение об ошибке. Я где-то читал, но без каких-либо подробностей, что volley не может послать JsonObjects, получить только тогда. Если вы хотите решить эту проблему, вы должны реализовать пользовательский класс, но я действительно не знаю, если я просто делаю глупую ошибку здесь (это возможно).

Вы, ребята, знаете об этом?

Спасибо за ваше время.

ответ

2

Вы можете отправить JSONObject без переопределения getParams или getBodyContentType. Что-то вроде этого, например,

JSONObject object = new JSONObject(); 
    JsonObjectRequest jr = new JsonObjectRequest(Request.Method.POST, url, object, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 

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

+0

Спасибо, Энди, работал просто отлично! =) –

+0

Фантастический! Рад, что смог помочь :) –

Смежные вопросы