2016-12-21 3 views
0

Я wan't отправить почту от JsonArrayRequest к серверу, и я нашел ответ, и я пытаюсь это ..андроид - залп JsonArrayRequest присоединиться StringRequest сообщение

но я получил ошибку как этот like this

это мой код

HashMap<String, String> params = new HashMap<String, String>(); 

public void JSON_DATA_WEB_CALL() { 
     jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL, new JSONObject(params), 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 

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

        } 
       }){ 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       HashMap<String, String> headers = new HashMap<String, String>(); 
       headers.put("CUSTOM_HEADER", "Yahoo"); 
       headers.put("ANOTHER_CUSTOM_HEADER", "Google"); 
       return headers; 
      } 
     }; 
     requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(jsonArrayRequest); 
    } 

как исправить это?

+0

Прочитайте эту статью: http://stackoverflow.com/questions/24358402/android-volley-post-request-workaround-for -jsonarrayrequest? rq = 1 – Stanojkovic

+0

извините, но как реализовать в моем случае? –

ответ

0

Используйте этот пользовательский класс.

public class CustomJsonArrayRequest extends JsonRequest<JSONArray> { 
/** 
* Creates a new request. 
* @param method the HTTP method to use 
* @param url URL to fetch the JSON from 
* @param jsonRequest A {@link JSONObject} to post with the request. Null is allowed and 
* indicates no parameters will be posted along with request. 
* @param listener Listener to receive the JSON response 
* @param errorListener Error listener, or null to ignore errors. 
*/ 
public CustomJsonArrayRequest(int method, String url, JSONObject jsonRequest, 
           Response.Listener<JSONArray> listener, Response.ErrorListener errorListener) { 
    super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, 
      errorListener); 
} 

@Override 
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) { 
    try { 
     String jsonString = new String(response.data, 
       HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET)); 
     return Response.success(new JSONArray(jsonString), 
       HttpHeaderParser.parseCacheHeaders(response)); 
    } catch (UnsupportedEncodingException e) { 
     return Response.error(new ParseError(e)); 
    } catch (JSONException je) { 
     return Response.error(new ParseError(je)); 
    } 
} 
} 

Реализация в вашем случае должно быть что-то вроде этого:

HashMap<String, String> params = new HashMap<String, String>(); 

public void JSON_DATA_WEB_CALL() { 
    CustomJsonArrayRequest request = new CustomJsonArrayRequest (Request.Method.POST, GET_JSON_DATA_HTTP_URL, new JSONObject(params), 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 

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

       } 
      }){ 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("CUSTOM_HEADER", "Yahoo"); 
      headers.put("ANOTHER_CUSTOM_HEADER", "Google"); 
      return headers; 
     } 
    }; 
    requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(request); 
} 
+0

У меня ошибка 'PROTOCOL_CHARSET' имеет личный доступ в 'com.andoir.volley.toolbox.JsonRequest' .. как исправить? –

+0

Можете ли вы опубликовать то, что вы сделали до сих пор? Кроме того, трассировка стека ошибки? – jlively

+0

это CustomJsonArrayRequest http://pastebin.com/KSFZZB1e, и это действие http://pastebin.com/s8rx3YDQ –

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