2015-09-04 31 views
-1

我可以接收一个json数组,但是如何使用volley发送一个json数组?我怎样才能发送一个json数组到webserver使用凌空?

JsonArrayRequest arrayReq = new JsonArrayRequest(URL, 
     new Listener<JSONArray>() { 

} 
+0

你能给更多信息或更多的代码?你在管理Web服务吗?您的Web服务器必须实现一些POST/PUT请求来获取这些值,然后执行任何你想要的。有时你需要授权才能创建并给出一些值对(键和值) –

+0

我认为创建JsonArray的简单方法是使用JSONArray。 (import org.json.JSONArray),并简单地使用volley在POST中发送一个String参数。 –

回答

0

尝试使用下面的代码段实现它,我希望它会工作:

public class JsonPostArrayRequest extends JsonRequest<JSONObject> { 

    JSONArray params; 
    public JsonPostArrayRequest(String url, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener,JSONArray params) { 
     super(Method.POST, url, null, listener, errorListener); 
     this.params=params; 
    } 

    @Override 
    public byte[] getBody() { 
      if (this.params != null && this.params.length() > 0) { 
       return encodeParameters(this.params, getParamsEncoding()); 
      } 
      return null; 

     } 

    private byte[] encodeParameters(JSONArray params, String paramsEncoding) { 
      try { 
       return params.toString().getBytes(paramsEncoding); 
      } catch (UnsupportedEncodingException uee) { 
       throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee); 
      } 
     } 

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