1

如何设置 HTTP 请求方法 MOVE 使用HttpURLConnection

使用HttpURLConnection或依赖于该类的库,代码会抛出异常Caused by: java.net.ProtocolException: Invalid HTTP method: MOVE。所以我猜MOVEJava平台不支持该方法。

是否有针对此问题/限制的补丁或解决方法?解决方法可能是另一个用于创建 HTTP 请求的 java 库。

编辑:请注意,MOVE动词支持WebDav HTTP extension。还有后来添加到协议中的PATCH扩展。

这里的参考是 SkyDrive API 以及我们正在尝试实现的移动功能。

请注意,Ruby 平台支持该MOVE方法我想知道为什么 java 不支持甚至不允许这些扩展

4

3 回答 3

3

如果服务器支持它,您可以尝试POST使用标头发出请求X-HTTP-Method-Override: MOVE

于 2014-06-11T05:22:24.180 回答
3

这是 HttpURLConnection 中的一个错误。如果您不想切换到其他库,可以尝试使用自省覆盖该方法(是的,这就是 Jersey 所做的,请参阅http://java.net/jira/browse/JERSEY-639

于 2013-03-04T20:09:57.100 回答
2

我更喜欢使用 Apache Http-Components 客户端。它有一个自定义的网络实现,因此可以使用非标准的 HTTP 方法,如 MOVE 或 PATCH:

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpUriRequest moveRequest = RequestBuilder
            .create("MOVE")
            .setUri("http://example.com")
            .build();        
CloseableHttpResponse response = httpclient.execute(moveRequest);

马文坐标:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.2+</version>
</dependency>
于 2014-08-06T14:18:54.253 回答