我想使用汗布发送带有POST的Pojo。
据我所知,Jersey有2个版本:1 ...和2 ...
我将代码添加到使用以下项目的现有项目中:
compile('com.sun.jersey:jersey-bundle:1.19')
compile('com.sun.jersey:jersey-json:1.19')
compile group: 'org.codehaus.jackson', name:'jackson-jaxrs', version: '1.1.1'
我尝试过几种方法在POST请求体中发送2个PoJos。
但他们都没有工作。
public void acquireDevice1(Device device, int port) throws InvalidArgumentException {
WebResource webResource = this.client.resource(this.rootUri);
webResource.type(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(Device.class, device)
.post(Integer.class, port);
}
和
@Override
public void acquireDevice(Device device, int port) throws InvalidArgumentException {
ObjectMapper mapper = new ObjectMapper();
String deviceString = null;
try {
deviceString = mapper.writeValueAsString(device);
} catch (IOException e) {}
Client client = Client.create();
WebResource webResource = client.resource(rootUri + "/devices/acquireDevice/");
ClientResponse response = webResource
.type("application/json")
.post(ClientResponse.class, deviceString);
if (response.getStatus() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
}
我应该将它全部包装在map<string,object>
吗?
答案 0 :(得分:0)
后期操作不可组合,每个操作都映射到一个Web请求,以支持您需要使用组合它们的第三个pojo将两个Pojos组合成一个pojo,即DeviceWithPort(或者您建议的地图) - 虽然那些可读性较低,或者是一个元组。)
Jersey1 / 2在这方面没有任何差异,如上所述,这是HTTP的一部分,因此没有客户可能做任何不同的事情。