Setting content type/ encoding in Jersey REST Client

梦想与她 提交于 2019-12-07 03:26:38

问题


HI I have been trying to call REST POST API using jersey REST Client. The API is docs is URL: METHOD: POST Header Info:- X-GWS-APP-NAME: XYZ Accept: application/json or application/xml

My Sample Jersey client code is

Client client = Client.create();

WebResource resource=client.resource(URL);

resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML);
resource.type(javax.ws.rs.core.MediaType.APPLICATION_XML);
resource.type("charset=utf-8");
ClientResponse response = resource.post(ClientResponse.class,myReqObj);

I have been trying this code variation since last 1 week and it is not working. Any help in this regard is highly appreciated.


回答1:


The tricky part is that the WebResource methods follows the Builder design pattern so it returns a Builder object which you need to preserve and carry on as you call further methods to set the full context of the request.

When you do resource.accept, it returns something you don't store, so it's lost when you do resource.type and therefore only your last call takes effect.

You'd typically set all the criterias in one line, but you could also save the output in a local variable.

ClientResponse response = client.resource(URL)
                                .accept(MediaType.APPLICATION_XML)
                                .type(MediaType.APPLICATION_XML)
                                .post(ClientResponse.class,myReqObj);



回答2:


I do like that.

Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE)
    .accept(MediaType.APPLICATION_JSON_TYPE)
    .post(Entity.entity(a, "application/json; charset=UTF-8"));

here, 'a' is account class instance which like

@XmlRootElement
public class account {
...
...
}


来源:https://stackoverflow.com/questions/17541223/setting-content-type-encoding-in-jersey-rest-client

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!