6

次のコードでは、次を使用しjerseyます。

    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-apache-client4</artifactId>
    <version>1.13-b01</version>

FOOBAR、PATCH、SEARCH などのカスタム リクエスト メソッドの使用に問題がありますhttpUrlConnection

 DefaultClientConfig config = new DefaultClientConfig();
 config.getProperties().put(URLConnectionClientHandler.PROPERTY_HTTP_URL_CONNECTION_SET_METHOD_WORKAROUND, true);

 Client c = Client.create(config);
 Form f = new Form();
 f.add("id", "foobar");

 WebResource r = c.resource("http://127.0.0.1/foo");
 String methodName = "foobar";
 String response = r.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).accept(MediaType.APPLICATION_JSON_TYPE).header("USER-AGENT", "my-java-sdk /1.1").method(methodName.toUpperCase(), String.class, f);

結果は次の例外です。

 com.sun.jersey.api.client.ClientHandlerException: java.net.ProtocolException: Invalid HTTP method: FOOBAR

これを解決するためにさまざまな方法を試しましたが、成功しませんでした。

  • http://java.net/jira/browse/JERSEY-639は上記の行で実装されていますconfig.getProperties()。それでもエラーが発生する
  • Apache http クライアントに切り替えると、すべての非 GET および非 PUT 要求の要求を受信するサーバーから 411 エラーを受け取ります。

簡単に言うと、Java 経由で利用できるのと同様の機能を実装したいと考えています。

フィードバックをお寄せいただきありがとうございます

4

2 に答える 2

5

Jersey 2.x ではClient、プロパティを設定します

true

Client client = ClientBuilder.newClient();
client.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
String response = client.target(url).request().method("PATCH", entity, String.class);
于 2015-04-08T02:46:53.007 に答える