Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用PUT方法将参数传递给截击_Java_Android_Android Volley_Put - Fatal编程技术网

Java 使用PUT方法将参数传递给截击

Java 使用PUT方法将参数传递给截击,java,android,android-volley,put,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(); } },

我使用的是以下简单代码:

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;
    }
};
JsonObjectRequest req=newjsonobjectrequest(Request.Method.PUT,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
delegate.postNotificationSuccessed();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(标记“Error:+Error.getMessage());
Log.d(标记“+error.getMessage()+”,“+error.toString());
delegate.postNotificationFailed((APIRERRORS)错误);
}
}){
@凌驾
公共映射getParams()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“内容类型”、“应用程序/x-www-form-urlencoded”);
headers.put(“state”,Boolean.toString(isChecked));
返回标题;
}
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
APIRERRORS error=null;
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
error=新的APIRERRORS(新字符串(volleyError.networkResponse.data));
}
返回误差;
}
};
当我使用
Request.Method.GET
POST
而不是
PUT
时,会调用
getParams()
方法,但不会使用
PUT
方法。 我的问题是我的API需要一个
PUT
方法

如何使用
PUT
方法传递参数

编辑: 使用
PUT
方法调用
getHeaders()
方法,因此我可以通过它传递参数吗

解决方案: 在我的例子中,我解决了将JsonObjecRequest更改为StringRequest的问题,就像@ishmaelMakitla建议的那样。现在我在内部传递
getParams()


我注意到您没有使用响应对象做任何事情-所以 也许可以将请求从JsonObjectRequest更改为StringRequest- 记住,然后您需要更改Response.Listener() to Response.Listener()和onResponse(JSONObject响应) 若您需要进一步帮助,请呼叫onResponse(字符串响应)。我 希望这能带来一些可行的解决方案

原因是,对于JsonObjectRequest,参数必须通过构造函数的第三个参数传递

jsonRequest—与请求一起发布的JSONObject。允许空值 并指示不会随请求一起发布任何参数


您可以在文档中查看更多信息。

因为您没有使用响应对象做任何事情-您应该将请求从
JsonObjectRequest
更改为
StringRequest
-记住,然后需要将
response.Listener()
更改为
response.Listener()
,并重新响应(JSONObject response)到
onResponse(String response)
…这里是我创建的-您可以简单地“即插即用”在您的代码中,并替换
JsonObjectRequest
代码。

我注意到您没有将响应对象用于任何事情-因此,也许可以将请求从
JsonObjectRequest
更改为
StringRequest
-记住,然后需要将
response.Listener()
更改为
response.Listener()
onResponse(JSONObject response)
onResponse(String response)
…如果您需要进一步的帮助,请大声呼喊。我希望这能带来一些可行的解决方案。感谢@ishmaelMakitla!酷的评论-顺便说一句,我已经为您创建了一个可以“即插即用”的快速要点在你的代码中,让我知道它是否有帮助。你可以使用要点中的代码替换上面的代码(可能注释掉)-测试它并让我知道它是否有帮助。您之前评论了我对JsonObjectRequest的问题,我们必须使用JsonObjectRequest构造函数的第三个参数传递参数,对于StringRequest,getParams方法是call请解释您的意思“我们必须用JsonObjectRequest构造函数的第三个参数传递参数”-更改为StringRewest是否解决了getParams问题?