2017-05-05 9 views
1

私はjersey-client 1.19で作業しています。私は、サーバーに要求を送信し、応答を取得するコードのこれらの行を持っている:com.sun.jersey.api.client.WebResource.Builder.getメソッドは応答を待機しますか?

Client client = Client.create(); 

WebResource webResource = client.resource("http://localhost:8080/RESTfulExample/rest/json/metallica/post"); 
String input = "{\"singer\":\"Metallica\",\"title\":\"Fade To Black\"}"; 

ClientResponse response = webResource.type("application/json").post(ClientResponse.class, input); 

if (response.getStatus() != 201) { 
    throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); 
} 

サーバーへの接続が問題を抱えている場合、私は、postメソッドが実行されることを疑問を持っている(遅いインターネット接続、応答が後になります3分)、コードif (response.getStatus() != 201)は実行し続けるか、postの実行からの応答を待ちますか?

ClientResponse response = webResource.type("application/json").post(ClientResponse.class, input); 

それは、サーバが応答するまでのこのライン待機を意味します -

答えて

1

次の行は、サーバーへのblocking (synchronous)呼び出しです。サーバーからいくつかの成功/エラー応答が受信されるまで、この行の後にプログラムの実行は続行されません。これは、前の行(POSTメソッドの応答)の完全な実行を待つことになる

if (response.getStatus() != 201) { 
    throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); 
} 

-

それは、この行の後に書かれたコードを意味します。

詳細については、Jerseynon-blocking (asynchronous)コールをサポートしています。詳細はhereをご確認ください。また、私はjerseyの古いバージョンを使用しないことをお勧めします。現在のバージョンは2.5.1であり、多くの違いがあります。jersey 1.x and 2.x

関連する問題