使用PUT方法将参数传递给凌空

时间:2016-04-27 15:48:39

标签: java android android-volley put

我正在使用这个简单的代码:

JsonObjectRequest req = new JsonObjectRequest(Request.Method.PUT, url, null, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        delegate.postNotificationSucced();
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        VolleyLog.d(TAG, "Error: " + error.getMessage());
        Log.d(TAG, ""+error.getMessage()+","+error.toString());
        delegate.postNotificationFailed((APIErrors) error);
    }
}){
    @Override
    public Map<String, String> getParams() throws AuthFailureError {
        Map<String,String> headers = new HashMap<String, String>();
        headers.put("Content-Type","application/x-www-form-urlencoded");
        headers.put("state", Boolean.toString(isChecked));
        return headers;
    }

    @Override
    protected VolleyError parseNetworkError(VolleyError volleyError){
        APIErrors error = null;

        if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
            error = new APIErrors(new String(volleyError.networkResponse.data));
        }
        return error;
    }
};

当我使用Request.Method.GETPOST代替PUT时,会调用getParams()方法,但不会使用PUT方法。 我的问题是我的API需要PUT方法。

如何使用PUT方法传递参数。

编辑:

使用PUT方法调用getHeaders()方法,我可以通过它传递参数吗?

解决方案:

在我的情况下,我解决了将我的JsonObjecRequest更改为StringRequest的问题,如@ishmaelMakitla所建议的那样。现在我在getParams()内传递。

  

我注意到你没有使用响应对象 - 所以   也许将请求从JsonObjectRequest更改为StringRequest -   记住你需要更改Response.Listener()   到Response.Listener()和onResponse(JSONObject响应)   to onResponse(String response)....如果您需要进一步的帮助,请大喊大叫。一世   希望这能带来一些可行的解决方案。

原因是使用JsonObjectRequest,参数必须通过构造函数的第三个参数

  

jsonRequest - 要发布的JSONObject。 Null是允许的   并表示不会随请求一起发布参数。

您可以read获取更多信息的文档。

1 个答案:

答案 0 :(得分:2)

由于您没有将响应对象用于任何事情 - 您应该将请求从JsonObjectRequest更改为StringRequest - 请记住,您需要将Response.Listener<JSONObject>()更改为Response.Listener<String>() } {o nResponse(JSONObject response)onResponse(String response) ....这里是StringRequest Gist我创建的 - 您只需在代码中“即插即用”并替换JsonObjectRequest码。