用截击设置post params

时间:2016-11-20 13:50:36

标签: android android-volley

我正在尝试使用排球发送POST请求,但我不确定如何设置参数。我试过这段代码

Map<String,String> map  = new HashMap<String,String>();
map.put("test", "test");
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, url, String.valueOf(new JSONArray(map)), this, this);

使用错误

执行此代码时,应用程序崩溃
  

活动com.example.test.MainActivity已泄露ServiceConnection

2 个答案:

答案 0 :(得分:0)

将jsonArray转换为字符串尝试不这样做。

这应该对你有帮助,

JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, url, new JSONArray(map), this, this);

如果你还在面对这个问题,请告诉我。

答案 1 :(得分:0)

为了向您的请求添加POST参数,您需要覆盖getParams()Request类的其他2种方法:

public class MapJARequest extends Request<JSONArray> {

  private final Map<String, String> params;

  private Response.Listener<JSONArray> listener;

  public MapJARequest( int method, String url, Map<String,String> params, Response.Listener<JSONArray> listener, Response.ErrorListener errorListener ) {
    super( method, url, errorListener );
    this.params = params;
    this.listener = listener;
  }

  protected Map<String, String> getParams() throws AuthFailureError {
    return params;
  }

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

  @Override
  protected void deliverResponse( JSONArray response ) {
    listener.onResponse( response );
  }

}

请注意,不幸的是,您无法立即从JsonArrayRequest继承。