繁体   English   中英

如何使用HttpURLConnection设置HTTP请求MOVE?

[英]How to set HTTP request MOVE using HttpURLConnection?

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

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

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

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

供参考的是我们尝试实现的具有移动功能的SkyDrive API。

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

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

如果服务器支持,则可以尝试使用X-HTTP-Method-Override: MOVEX-HTTP-Method-Override: MOVEPOST请求。

我更喜欢使用Apache Http-Components Client。 它具有自定义的网络实现,因此可以使用非标准的HTTP方法(例如MOVE或PATCH):

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

Maven坐标:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.2+</version>
</dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM