我正在尝试使用排球发送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
答案 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
继承。