我一直在为我公司的不同服务创建多个小型Java RESTful客户端库.大多数时候,我无法在服务器端更改任何内容,我需要编写Jersey代码片段以与现有RESTful API进行交互.
据我所知,我一直在使用Jersey和Jackson来使用JSON:当我查询POJO时,我从JSON反序列化它,当我需要发送POJO时,我将它序列化为JSON体.到目前为止,这两种片段一直在为我做这个工作......
ClientResponse response = webResource
.path("/path/to/resource")
.queryParam("key", "value")
.accept(Mediatype.APPLICATION_JSON)
.get(ClientResponse.class);
// (...) Check response status code
MyClassPojo pojo = response.getEntity(MyClassPojo.class);
Run Code Online (Sandbox Code Playgroud)
ClientResponse response = webResource
.path("/path/to/resource")
.type(Mediatype.APPLICATION_JSON_TYPE)
.accept(Mediatype.APPLICATION_JSON)
.post(ClientResponse.class, pojo)
// (...) Check response status code
Run Code Online (Sandbox Code Playgroud)
我现在面临一个RESTful服务器,它不接受JSON主体发送我的POJO.似乎唯一有用的是使用查询参数.
例如,如果我想发送对象
public MyClassPojo {
public int attr1;
public String attr2;
}
MyClassPojo pojo = new MyClassPojo();
pojo.attr1 = 42;
pojo.attr2 = "Foo bar";
Run Code Online (Sandbox Code Playgroud)
我本来喜欢用JSON序列化它:
{
"attr1": 42,
"attr2": "Foo bar"
}
Run Code Online (Sandbox Code Playgroud)
但是这个特定的RESTful服务器期待查询参数:
?attr1=42&attr2=Foo+bar …Run Code Online (Sandbox Code Playgroud)