1

?を使用してHTTPリクエストメソッドMOVEを設定するにはどうすればよいHttpURLConnectionですか?

HttpURLConnectionまたはそのクラスに依存するライブラリを使用すると、コードは例外をスローしますCaused by: java.net.ProtocolException: Invalid HTTP method: MOVEMOVEしたがって、このメソッドはJavaプラットフォームではサポートされていないと思います。

この問題/制限のパッチまたは回避策はありますか?回避策は、HTTPリクエストを作成するための別のJavaライブラリである可能性があります。

編集:MOVE動詞はWebDavHTTP拡張機能でサポートされていることに注意してください。後でプロトコルに追加されたPATCH拡張機能もあります。

参考までに、実装しようとしている移動機能を備えたSkyDriveAPIを示します。

RubyプラットフォームはMOVEメソッドをサポートしていることに注意してください。なぜJavaはこれらの拡張機能をサポートしていないのか、あるいは許可していないのだろうか

4

3 に答える 3

3

これはHttpURLConnectionのバグです。別のライブラリに切り替えたくない場合は、イントロスペクションを使用してメソッドを上書きしてみてください(そうです、Jerseyが行うことです。http://java.net/jira/browse/JERSEY-639を参照してください) 。

于 2013-03-04T20:09:57.100 に答える
3

サーバーがサポートしている場合は、ヘッダーを使用してPOSTリクエストを行うことができます。X-HTTP-Method-Override: MOVE

于 2014-06-11T05:22:24.180 に答える
2

私はApacheHttp-ComponentsClientを使用することを好みます。カスタムネットワーク実装があるため、MOVEやPATCHなどの非標準のHTTPメソッドを使用できます。

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>
于 2014-08-06T14:18:54.253 に答える