Post 在Jersey REST客户端中设置内容类型/编码

Post 在Jersey REST客户端中设置内容类型/编码,post,jersey,contenttype,Post,Jersey,Contenttype,嗨,我一直在尝试使用jersey REST客户端调用REST POST API。API是docs 网址: 方法:邮寄 标题信息:- X-GWS-APP-NAME:XYZ 接受:application/json或application/xml 我的示例Jersey客户端代码是 Client client = Client.create(); WebResource resource=client.resource(URL); resource.accept(javax.ws.rs.core.M

嗨,我一直在尝试使用jersey REST客户端调用REST POST API。API是docs 网址: 方法:邮寄 标题信息:- X-GWS-APP-NAME:XYZ 接受:application/json或application/xml

我的示例Jersey客户端代码是

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);

从上一周开始,我一直在尝试这个代码变体,但它不起作用。非常感谢您在这方面提供的任何帮助。

棘手的部分是WebResource方法遵循Builder设计模式,因此它返回一个Builder对象,您需要在调用其他方法以设置请求的完整上下文时保留并执行该对象

当您执行resource.accept时,它会返回一些您没有存储的内容,因此在执行resource.type时它会丢失,因此只有您最后的调用才会生效

通常在一行中设置所有标准,但也可以将输出保存在局部变量中

ClientResponse response = client.resource(URL)
                                .accept(MediaType.APPLICATION_XML)
                                .type(MediaType.APPLICATION_XML)
                                .post(ClientResponse.class,myReqObj);
我真的很喜欢

Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE)
    .accept(MediaType.APPLICATION_JSON_TYPE)
    .post(Entity.entity(a, "application/json; charset=UTF-8"));
这里,“a”是account类实例,类似于

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

这是给泽西2号的吗?似乎。。。不寻常,也许你可以把答案扩大一点?