[英]How to send PUT, DELETE HTTP request in HttpURLConnection?
[英]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: MOVE
标X-HTTP-Method-Override: MOVE
出POST
请求。
我更喜欢使用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.