如何使用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不支持甚至不允许这些扩展。
答案 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>