我正在開發一個項目,在該項目中,我需要對運行Restful Service的服務器進行HTTP URL調用,該服務以JSON String
的形式返回響應。SimpleClientHttpRequestFactory與HttpComponentsClientHttpRequestFactory的Http請求超時RestTemplate?
下面是一個使用未來和可調用我的主要代碼:
public class TimeoutThreadExample {
private ExecutorService executor = Executors.newFixedThreadPool(10);
private RestTemplate restTemplate = new RestTemplate();
public String getData() {
Future<String> future = executor.submit(new Task(restTemplate));
String response = null;
try {
response = future.get(500, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return response;
}
}
下面是我Task
類,它實現Callable
接口,並使用RestTemplate
:
class Task implements Callable<String> {
private RestTemplate restTemplate;
public Task(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String call() throws Exception {
String url = "some_url";
String response = restTemplate.getForObject(url, String.class);
return response;
}
}
問題陳述:
正如你在上面看到的,我我使用默認的方式執行URL使用RestTemplate
它不使用任何Http請求超時,這意味着它在內部使用-1
作爲read
和connection
超時。
現在我想要做的是,我想在上面的代碼中有效地使用RestTemplate
來設置Http請求超時。而且我不確定我需要使用哪一類,我可以看到HttpComponentsClientHttpRequestFactory
和SimpleClientHttpRequestFactory
,因此不確定我需要使用哪一類?
我上面的代碼的任何簡單的示例基礎將幫助我更好地瞭解如何使用RestTemplate
設置Http請求超時。
而且我的Http Request超時值是否應該小於未來的超時值?
HttpComponentsClientHttpRequestFactory
vsSimpleClientHttpRequestFactory
。哪一個使用?- 我的Http Request超時值是否應該小於將來的超時值?
感謝您的建議。你有什麼機會知道我們應該使用哪一個?或者我們可以使用這兩種中的任何一種?而且我如何有效地在我的上述代碼庫中使用'requestFactory'?我從你的例子中明白瞭如何使用它,但是我在上面的代碼庫中將'requestFactory'放在哪裏,因爲我使用DI來傳遞RestTemplate。 – AKIWEB 2014-09-07 01:34:25
這取決於你,但親自在我們使用HttpComponentsClientHttpRequestFactory的大型項目中。但我想這兩種方法都不應該有任何問題。使用'HttpComponentsClientHttpRequestFactory',您可以使用您自己的'HttpClient'配置更多選項。 爲了在您的代碼庫中使用,只需傳遞'HttpComponentsClientHttpRequestFactory'實例,就像我在我的回答末尾寫的代碼 – 2014-09-07 02:02:54
當然,我正在考慮使用'HttpComponentsClientHttpRequestFactory'。我不明白你想讓我通過哪個實例?如果您可以在我的代碼庫上提供示例基礎,那麼我會更好地理解您的意思是什麼? – AKIWEB 2014-09-07 02:10:32