为什么不使用HttpClient httpClient = new HttpClient(); httpClient.setConnectionTimeout(9000)
时间: 2024-04-27 16:20:56 浏览: 164
HttpClient是一个过时的类,它在Android 6.0版本中被废弃。在Android 9.0版本中已经被移除。Google推荐使用HttpURLConnection或OkHttp来进行网络请求。设置连接超时时间的方法也有所不同,HttpURLConnection可以使用setConnectTimeout()方法设置连接超时时间,而OkHttp可以使用connectTimeout()方法设置连接超时时间。另外,连接超时时间的设置应该根据具体情况进行调整,一般来说不需要设置得过长。如果连接超时时间过长,会导致用户体验不佳。
相关问题
使用的是Apache Commons HttpClient,为什么不使用HttpClient httpClient = new HttpClient(); httpClient.setConnectionTimeout(9000);而去使用HttpClient httpClient = new HttpClient(); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);二者的区别是什么
这两个设置连接超时时间的方法的区别在于,第一个方法设置的是HttpClient实例的连接超时时间,而第二个方法设置的是HttpClient实例对应的HttpConnectionManager的连接超时时间。如果使用第一个方法,将会对所有请求生效,而使用第二个方法可以对不同的请求设置不同的连接超时时间。
另外,Apache Commons HttpClient已经被废弃,推荐使用Apache HttpComponents中的HttpClient来进行网络请求。在使用HttpComponents的HttpClient时,设置连接超时时间的方法为:
```
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000)
.build();
HttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();
```
这里使用了RequestConfig类来设置连接超时时间,而不是直接设置HttpClient实例或HttpConnectionManager的连接超时时间。这样可以更加灵活地对不同的请求设置不同的连接超时时间。
public static HttpClient getHttpClient(){ BasicHttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, REQUEST_TIMEOUT); HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT); HttpClient client = new DefaultHttpClient(httpParams); return client; }我哪里错了?修改结果
这段代码本身没有错误,但是它使用的是过时的HTTPClient。如果你使用较新版本的Android SDK,这段代码可能会导致编译错误。
为了避免这种情况,请考虑使用Android内置的HttpURLConnection或第三方库,如OkHttp。下面是一个使用OkHttp的示例:
```
public static OkHttpClient getHttpClient() {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)
.readTimeout(SO_TIMEOUT, TimeUnit.MILLISECONDS)
.build();
return client;
}
```
使用OkHttp,你可以轻松地设置连接和读取超时时间,并且它支持HTTP/2和HTTP/1.1协议。所以,我建议你尝试使用OkHttp,它是一个更好的选择。
阅读全文