Android网络连接1——DefaultHttpClient
16lz
2021-01-26
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
更多相关文章
- Android解析Json数据(二)—使用反射机制
- 使用HttpURLConnection访问网络
- Android(安卓)疯狂造轮子 常用工具类 直接拿来用!
- Android(安卓)游戏开发之SurfaceView的简单使用
- Android属性动画---Property Animation(六)
- Android(安卓)Input系统源码分析一(启动与初始化)
- Android(安卓)Okhttp主流程源码分析
- 关于android监听H5发送的事件实现方法。
- Activity的四种加载模式 -- singleTask 和 singleInstance模式