2016-11-20 28 views
0

我想发送一个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

你有答案吗? – tpk

回答

0

为了POST参数添加到您的要求,你需要重写Request类的getParams()和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继承马上很遗憾。

0

执行你下铸造jsonArray到字符串尽量不要这样做。

这会帮助你,

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

让我知道如果u仍然面临这个问题。

+0

谢谢,但我得到了这个错误org.json.JSONException:不是一个基本数组:类java.util.HashMap – user567