如何使用HttpURLConnection设置HTTP请求?

时间:2013-03-04 19:09:24

标签: java http httpurlconnection

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

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

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

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

此处参考的是具有我们正在尝试实施的move功能的SkyDrive API。

请注意Ruby platform supports the MOVE method我想知道为什么java不支持甚至不允许这些扩展

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我更喜欢使用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>