使用以下代码,使用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 客户端时,我收到来自服务器的 411 错误,该服务器接收所有非 GET 和非 PUT 请求的请求。
长话短说,我想实现通过 Java 提供的类似功能:
预先感谢您的反馈