目录
HttpClient 和 HttpURLConnection
HttpClient 和 HttpURLConnection
1、Android网络访问简介
在android移动端访问网络资源会接触到两个类HttpClient 和 HttpURLConnection
在android2.2和之前的版本会使用HttpClient,但是在android2.3之后一般使用HttpURLConnection,HttpClient是Apache的一个开源库。
从Android6.0这个版本Android SDK删除了HttpClient的类库,如果开发者想使用这个类库可以在build.gradle中添加一下代码来引入该类库:
android {
...
useLibrary 'org.apache.http.legacy'
}
注意在android中使用网络请求的时候不要忘记在清单文件中申请权限
<uses-permission android:name="android.permission.INTERNET"/>
1、HttpClient
下面是我们使用HttpClient的例子,AndroidHttpClient实际上继承HttpClient,我们这里使用AndroidHttpClient来实践。
public final class AndroidHttpClient implements HttpClient;
1.1、使用HttpClient实践GET请求
private AndroidHttpClient createHttpClient() {
AndroidHttpClient androidHttpClient = AndroidHttpClient.newInstance("");
HttpParams httpParams = androidHttpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 15000);//设置连接超时
HttpConnectionParams.setSoTimeout(httpParams, 15000);//设置请求超时
HttpConnectionParams.setTcpNoDelay(httpParams, true);
HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(httpParams, HTTP.UTF_8);
HttpProtocolParams.setUseExpectContinue(httpParams, true);
return androidHttpClient;
}
private String converStreamToString(InputStream is) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
String respose = sb.toString();
return respose;
}
private void httpGet(String url) {
HttpGet mHttpGet = new HttpGet(url);
mHttpGet.addHeader("Connection", "Keep-Alive");
try {
AndroidHttpClient httpClient = createHttpClient();
HttpResponse httpResponse = httpClient.execute(mHttpGet);
HttpEntity httpEntity = httpResponse.getEntity()