我一直在尝试使用jersey REST Client调用REST POST API。 API是docs 网址: 方法:POST 标题信息: - X-GWS-APP-NAME:XYZ 接受:application / json或application / xml
我的样本泽西客户端代码是
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);
自从过去1周以来,我一直在尝试此代码变体,但它无效。在这方面的任何帮助都非常感谢。
答案 0 :(得分:8)
棘手的部分是WebResource方法遵循Builder设计模式,因此它返回一个Builder对象,当您调用其他方法来设置请求的完整上下文时,您需要保留并继续该对象。
当你执行resource.accept时,它会返回你不会存储的内容,因此当你执行resource.type时它就会丢失,因此只有你的上一次调用才会生效。
您通常会在一行中设置所有标准,但您也可以将输出保存在局部变量中。
ClientResponse response = client.resource(URL)
.accept(MediaType.APPLICATION_XML)
.type(MediaType.APPLICATION_XML)
.post(ClientResponse.class,myReqObj);
答案 1 :(得分:1)
我喜欢这样。
Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE)
.accept(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(a, "application/json; charset=UTF-8"));
这里,' a'是类似
的帐户类实例@XmlRootElement
public class account {
...
...
}