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. **DefaultHttpClient简介** `DefaultHttpClient`是Apache HttpClient 4.x版本中的默认HTTP客户端实现,它封装了HTTP请求的发起、响应处理和连接管理等操作。这个类提供了一种方便的方式来执行HTTP和HTTPS请求,...
在网络请求过程中,可能会遇到各种错误,例如网络连接问题、超时等。需要适当地处理这些异常。同时,为了提高性能和减少资源消耗,可以通过`BasicHttpParams`或`PoolingHttpClientConnectionManager`来管理连接池。 ...
在IT行业中,网络通信是应用程序的核心部分,尤其是对于Android开发者来说。`DefaultHttpClient`是Apache HTTP客户端库的一个组件,常用于Android应用中的HTTP请求处理。本示例"DefaultHttpClient_httpsDemo"聚焦于...
`java.net.URL`用于表示统一资源定位符,`URLConnection`或`HttpURLConnection`则负责建立和管理网络连接。通过这两个类,开发者可以设置请求头、处理重定向、上传下载数据等。例如,以下代码展示了使用`...
1. **异步网络请求的重要性** 在Android中,由于主线程(UI线程)不能长时间执行耗时操作,如网络请求,否则会导致应用无响应(ANR)。因此,异步网络请求是必要的,它将网络操作放到后台线程,保持UI的流畅性。 2...
本主题将深入探讨如何在Android中实现网络交互,主要关注使用HttpClient和HttpResponse这两个关键组件。 首先,HttpClient是Android SDK中一个用于执行HTTP请求的库。在Android 6.0(API级别23)之前,HttpClient是...
在Android平台上,与Internet接轨是实现众多功能的基础,如数据交换、在线服务、社交媒体整合等。本文将深入探讨如何在Android应用中实现网络...了解并熟练掌握这些网络连接技术对于开发高质量的Android应用至关重要。
尽管Android平台自带了java.sql包,理论上支持多种数据库的JDBC Driver,但在实际应用中,由于设备兼容性、性能、安全性和网络限制等问题,直接从Android设备连接远程数据库并非最佳实践。这不仅可能导致不稳定的...
在Android中,`DefaultHttpClient`是早期常用的实现方式,但现在已被弃用,更推荐使用`HttpURLConnection`或者像OkHttp这样的现代库。POST请求需要设置请求头,特别是Content-Type,然后写入请求体数据。 "myhttp...
总之,Android网络编程中的Http通信涉及到了HTTP协议的理解、HttpURLConnection或HttpClient的使用、请求参数的封装、网络连接的管理和优化等多个层面。开发者需要根据实际需求选择合适的方法,并理解其背后的工作...
### Android界面切换与网络通信详解 #### 一、Android界面切换方法 在Android开发中,界面切换是一项基本但非常重要的技能。它可以帮助开发者构建出更加动态且交互丰富的应用。根据提供的部分信息,我们可以将...
在Android开发中,网络通信是应用与服务器...在CMWAP环境下,需要对网络连接进行特殊的代理配置,以便应用能正常通过移动网络访问互联网。理解并熟练运用这些技术,可以有效地提高Android应用的网络功能和用户体验。
注意处理可能的异常情况,例如网络连接问题或服务器返回错误。 获取到JSON字符串后,需要解析成Java对象以便进一步处理。在Android 3.0及以上版本,SDK提供了`org.json`包,包含`JSONObject`和`JSONArray`等类,...
在Android平台上,网络通信主要涉及两种传输层协议:TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。这两种协议各有特点,适用于不同的应用场景。本篇将详细介绍Android中如何封装和使用TCP...
### Android开发中的网络请求方式详解 在Android应用开发过程中,网络请求是不可或缺的一部分。通过网络请求,应用程序可以与服务器进行数据交互,实现更多的功能和服务。本文将详细介绍Android开发中常用的几种...
new Thread(new Runnable() { public void run() { // TODO Auto-generated method stub try { //设置连接超时 ... DefaultHttpClient httpclient = new DefaultHttpClient( httpParameters);
【网络编程与Internet应用在Android中的实践】 在网络编程领域,Android平台提供了多种方式来实现应用程序与互联网的交互。本文将重点介绍使用`HttpURLConnection`和`HttpClient`进行网络请求,以及利用`WebView`...
在Android开发中,HTTPClient是常用的网络通信库之一,用于与服务器进行交互,获取或发送数据。本示例主要讲解如何使用HTTPClient访问服务器并获取JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级...
虽然不直接处理HTTP请求,但Android网络接口在实现网络功能时提供了一些辅助类和API,比如ConnectivityManager用于检测网络连接状态,以及Volley、OkHttp等库,它们是Android平台推荐的网络通信库,提供高性能的HTTP...