【问题标题】:How to replace Hurlstack for Volley?如何将 Hurlstack 替换为 Volley?
【发布时间】: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


【解决方案1】:

在 RequestQueue 工厂方法中传递您自定义的 HttpStack 实现:

HttpStack stack = new MyHurlStack();
RequestQueue queue = Volley.newRequestQueue(context, stack);

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2016-03-09
    • 2011-10-10
    • 2011-08-05
    • 2017-07-21
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多