9

我目前正在一个项目中使用 Android 的 Volley 网络库。我已经从https://android.googlesource.com/platform/frameworks/volley/拉下了 volley 的 master 分支,所以我的库项目应该是最新的,但只支持以下请求方法:

/**
 * Supported request methods.
 */
public interface Method {
    int DEPRECATED_GET_OR_POST = -1;
    int GET = 0;
    int POST = 1;
    int PUT = 2;
    int DELETE = 3;
}

扩展库以支持补丁请求可能不会太麻烦,所以我的问题是为什么基础库不支持补丁请求?另外,任何人都可以建议任何已经添加此支持的好的 git 分支吗?

4

1 回答 1

11

我终于找到了这个问题的答案。这是非常愚蠢的。问题不在于 Volley 框架。Java 的 HTTPUrlConnection 不支持 PATCH。互联网上有使用 Java Reflection 将方法对象设置为 PATCH 的方法,但它们带来了额外的问题。

X-HTTP-Method-Override我终于使用标题解决了这个问题。我什至用 body 发出了一个正常的 POST 请求,并添加了这个标题,如下所示。

X-HTTP-Method-Override: PATCH

它奏效了。您的 Web 服务器端应该支持方法覆盖。

于 2013-11-26T15:51:47.337 回答