我正在研究jersey-client 1.19。我有这些代码行向服务器提交请求并获得响应:
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
执行的响应?
答案 0 :(得分:1)
以下行是对服务器的blocking (synchronous)
调用 -
ClientResponse response = webResource.type("application/json").post(ClientResponse.class, input);
这意味着此行等待服务器响应。在此行之后程序执行将不会继续,直到从服务器收到一些成功/错误响应。
这意味着在此行之后编写的代码 -
if (response.getStatus() != 201) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}
它将等待前一行的完整执行(post方法响应)。
有关信息,Jersey
还支持non-blocking (asynchronous)
对服务器的调用。有关详细信息,请查看here。另外,我建议不要使用jersey
的旧版本。当前版本为2.5.1,jersey 1.x and 2.x