6

嗨,我一直在尝试使用 jersey REST Client 调用 REST POST API。API 是文档是 URL:方法:POST 标头信息:- 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);

自上周以来,我一直在尝试此代码变体,但它不起作用。非常感谢这方面的任何帮助。

4

2 回答 2

9

棘手的部分是 WebResource 方法遵循 Builder 设计模式,因此它返回一个 Builder 对象,当您调用进一步的方法来设置请求的完整上下文时,您需要保留并继续该对象。

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

您通常会在一行中设置所有条件,但您也可以将输出保存在局部变量中。

ClientResponse response = client.resource(URL)
                                .accept(MediaType.APPLICATION_XML)
                                .type(MediaType.APPLICATION_XML)
                                .post(ClientResponse.class,myReqObj);
于 2013-07-09T23:12:56.200 回答
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 {
...
...
}
于 2015-12-19T16:19:20.467 回答