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

更多相关文章

  1. Android解析Json数据(二)—使用反射机制
  2. 使用HttpURLConnection访问网络
  3. Android(安卓)疯狂造轮子 常用工具类 直接拿来用!
  4. Android(安卓)游戏开发之SurfaceView的简单使用
  5. Android属性动画---Property Animation(六)
  6. Android(安卓)Input系统源码分析一(启动与初始化)
  7. Android(安卓)Okhttp主流程源码分析
  8. 关于android监听H5发送的事件实现方法。
  9. Activity的四种加载模式 -- singleTask 和 singleInstance模式

随机推荐

  1. android大分辨率问题
  2. ActivitiyThread的建立
  3. Android JSBridge的原理与实现
  4. android 初探
  5. Android核心分析之GUI框架的原理
  6. 基于feng streaming server 搭建Android
  7. Android源码-Android系统启动源码分析
  8. 【Android】学习笔记(9)――SQLite简单使
  9. js与android之间的简单传值
  10. android 使用SharedPreferences保存对象