2016-03-20 11 views
0

ジャージーを使用してPOSTでPojoを送信します。ジャージーを使用してPOST要求本体に2 PoJosを送信する方法は?

私は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' 

:私は使用して既存のプロジェクトにコードを追加している1 ... 2 ...

は、 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

ポスト操作は構成できません。それぞれがウェブリクエストに対応しています。ユースケースをサポートするために、2つのPojosを結合する3番目のpojo(つまりDeviceWithPortマップ - それは読みにくいですが、タプルです)。

Jersey1/2はこの点で違いはありません。上記のように、これはHTTPの一部なので、クライアントは何も別のことをしないでしょう。

関連する問題