簡體   English   中英

Jersey UniformInterfaceException嘗試代理REST POST服務

[英]Jersey UniformInterfaceException trying to proxy to REST POST service

當我嘗試執行以這種方式構造的代碼時,我一直收到406 HTTP響應。 我已經嘗試過多次重構代碼和輸入,但我仍然收到這個錯誤,而且我已經達到了我甚至不知道要調試的地步。 異常似乎表明post()方法沒有以所需的格式提供@FormParam ,但是你可以看到.accept(MediaType.APPLICATION_FORM_URLENCODED)@Consumes(MediaType.APPLICATION_FORM_URLENCODED)確實匹配。

我正在使用Firefox附加的HTTPRequester來傳遞@FormParam ,並確保我使用適當的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)

UniformInterfaceException只是一個包含較差名稱的全部異常(它的名稱是因為它是一個提供統一接口的異常,無論錯誤如何)。 它基本上是澤西島的任何東西拋出的IOException。 實際錯誤是406 Unacceptable

請求的資源只能根據請求中發送的Accept標頭生成不可接受的內容。

在這里,您說您接受MediaType.APPLICATION_FORM_URLENCODED

String returnValue = service.accept(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form);

但是您的服務生成MediaType.APPLICATION_XML

@Produces(MediaType.APPLICATION_XML)

由於您的服務器無法生成客戶端表示會接受的任何內容,因此會返回406錯誤。

最有可能的是,你的意思是設置WebResource.type ,而不是accept

String returnValue = service.type(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM