【发布时间】:2017-07-07 23:52:10
【问题描述】:
我发现 Volley 库的 DELETE 方法存在问题。如果您查看 HurlStack 类,并找到 setConnectionParametersForRequest() 方法,您将看到以下内容:
static void setConnectionParametersForRequest(HttpURLConnection connection, Request<?> request) throws IOException, AuthFailureError {
switch(request.getMethod()) {
case -1:
byte[] postBody = request.getPostBody();
if(postBody != null) {
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", request.getPostBodyContentType());
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.write(postBody);
out.close();
}
break;
case 0:
connection.setRequestMethod("GET");
break;
case 1:
connection.setRequestMethod("POST");
addBodyIfExists(connection, request);
break;
case 2:
connection.setRequestMethod("PUT");
addBodyIfExists(connection, request);
break;
case 3:
connection.setRequestMethod("DELETE");
break;
default:
throw new IllegalStateException("Unknown method type.");
}
}
请注意,DELETE 方法没有“addBodyIfExists(connection, request)”。这是一个问题,因为现在如果您使用 DELETE 方法并且您想要/需要包含一个您无法添加的主体。我的问题是,如何替换这个 HurlStack 并使用自定义 HurlStack 来包含我的 DELETE 方法的主体?
【问题讨论】:
-
在RequestQueue工厂方法中传递你自定义的Http栈实现:RequestQueue.newRequestQueue(context, stack)
-
@BladeCoder 你能发布你的答案吗?我会接受的。这看起来可行。
标签: android request android-volley