【发布时间】:2012-05-18 17:01:22
【问题描述】:
使用以下代码,使用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 提供的类似功能:
提前感谢您的反馈
【问题讨论】:
-
能否请您提供一些您收到此请求的服务器端代码。
-
由于HTTP方法无效异常,服务器端从未收到请求
-
@sdolgy 你能发布完整的堆栈吗?这将(很可能)是泽西岛内部的一个错误。
标签: java rest jersey httpurlconnection