Android网络连接1——DefaultHttpClient
Android SDK 支持两种直接访问HTTP资源的方式:DefaultHttpClient 和 HttpURLConnection 。这两种方式都封装了HTTP请求。其中DefaultHttpClient 通过HttpGet 和 HttpPost 分别封装了GET 和 POST 请求。HttpURLConnection 通过URL的构造方法制定HTTP资源地址,然后通过URL.openConnection来获取HttpURLConnection对象。除此之外,可以用 客户端Socket发送HTTP请求。
本文主要介绍DefaultHttpClient。
DefaultHttpClient 类以默认的请求属性创建一个HttpClient,该类所在的包:org.apache.http.impl.client.DefaultHttpClient. HttpClient是个很不错的开源框架,封装了访问http的请求头、参数、内容体、响应等。
使用步骤:
1、创建Http 客户端对象
2、创建请求对象
如果是post,且有上传参数,调用HttpPost的setEntity来设置请求实体
3、执行请求获得响应对象
4、判断状态吗是否等于200
5、如果状态吗等于200,从响应对象中获取响应实体
// 1、创建HttpPost或者HttpGet对象
HttpPost httpPost = new HttpPost(
"http://192.168.1.1/login.asp");
// HttpGet httpGet = new
// HttpGet("http://192.168.1.1/login.asp");
// 2、设置POST请求 必须用NameValuePair对象
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("bookname",
"笑傲江湖"));
// UrlEncodedFromEntity类中封装了一个List集合,该集合元素是NameValuePair类,用于向服务器发送或从服务器接收数据。
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(
params, HTTP.UTF_8);
// 3、设置POST请求的参数
httpPost.setEntity(entity);
// 4、用execute 方法发送POST请求,并返回HttpResponse对象
HttpResponse httpResponse = new DefaultHttpClient()
.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// EntityUtils类是专门用于处理HttpEntity的帮助类,这里是获得返回结果
String result = EntityUtils
.toString(httpResponse.getEntity());
Log.i("TAG", result);// 输出服务器返回来的数据。
}注意:Android4.0后,联网操作必须是异步的,不能在UI线程中进行,否则会抛异常。
android.os.NetworkOnMainThreadException
参考:李宁老师的《Android高薪之路》
http://www.cnblogs.com/devinzhang/archive/2012/01/17/2325092.html