このように構造化されたコードを実行しようとすると、406HTTP応答を受信し続けます。コードと入力を何度も再構築しようとしましたが、それでもこのエラーが発生し、何をデバッグすればよいのかさえわからなくなってしまいました。例外は、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);
実際のサービス
@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;
}
例外
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)