ast*_*eri 4 java rest post jersey firefox-addon
当我尝试执行以这种方式构造的代码时,我一直收到406 HTTP响应.我已经尝试过多次重构代码和输入,但是我仍然收到这个错误,而且我已经达到了我甚至不知道要调试什么的程度.异常似乎表明该post()
方法不是@FormParam
以所需格式提供s,但正如您所看到.accept(MediaType.APPLICATION_FORM_URLENCODED)
的@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
那样,确实匹配.
我使用Firefox附加HTTPRequester传入@FormParam
s并确保我使用适当的Content-Type(application/x-www-form-urlencoded
)传递它们.我已经没有东西要检查了.有没有人有任何想法?
代理服务
Client client = Client.create();
WebResource service = client.resource(myURL);
Form form = new Form();
form.add("value1", value1);
form.add("value2", value2);
form.add("valueN", valueN);
String returnValue = service.accept(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form);
Run Code Online (Sandbox Code Playgroud)
实际服务
@POST
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/theService")
public String theService(
@FormParam("value1") String value1,
@FormParam("value2") String value2,
@FormParam("valueN") String valueN) {
String returnValue = null;
/*
* Do Stuff
*/
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
例外
com.sun.jersey.api.client.UniformInterfaceException: POST http://theURL/theService returned a response status of 406
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:563)
at com.sun.jersey.api.client.WebResource.access$300(WebResource.java:69)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:499)
Run Code Online (Sandbox Code Playgroud)
UniformInterfaceException只是一个包含较差名称的全部异常(它的名称是因为它是一个提供统一接口的异常,无论错误如何).它基本上是泽西岛的任何东西抛出的IOException.实际错误是406 Unacceptable:
请求的资源只能根据请求中发送的Accept标头生成不可接受的内容.
在这里你说你接受MediaType.APPLICATION_FORM_URLENCODED
:
String returnValue = service.accept(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form);
Run Code Online (Sandbox Code Playgroud)
但是你的服务会产生MediaType.APPLICATION_XML
:
@Produces(MediaType.APPLICATION_XML)
Run Code Online (Sandbox Code Playgroud)
由于您的服务器无法生成客户端表示会接受的任何内容,因此会返回406错误.
最有可能的是,你的意思是设定WebResource.type
,而不是accept
:
String returnValue = service.type(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24941 次 |
最近记录: |