`

Android HttpClient网络编程

阅读更多

文章来源:http://www.hxstrive.com/article/40.htm

 

Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。以下是学习中的一些经验。

 

1、HttpURLConnection接口

        首先需要明确的是,Http通信中的POST和GET请求方式的不同。GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中。因此,在编程之前,应当首先明确使用的请求方法,然后再根据所使用的方式选择相应的编程方式。HttpURLConnection是继承于URLConnection类,二者都是抽象类。其对象主要通过URL的openConnection方法获得。创建方法如下代码所示:

URL url = new URL("http://www.bug315.com/index.jsp?type=231");

HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();

 

通过以下方法可以对请求的属性进行一些设置,如下所示:

//设置输入和输出流

urlConn.setDoOutput(true);

urlConn.setDoInput(true);

//设置请求方式为POST

urlConn.setRequestMethod("POST");

//POST请求不能使用缓

urlConn.setUseCaches(false);

urlConn.disConnection();

 

HttpURLConnection默认使用GET方式,例如下面代码所示:

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

InputStreamReader in = new InputStreamReader(urlConn.getInputStream());

 

BufferedReader buffer = new BufferedReader(in);

String inputLine = null;

while (((inputLine = buffer.readLine()) != null)) {

    resultData += inputLine + "\n";

}

 

in.close();

urlConn.disconnect();

 

如果需要使用POST方式,则需要setRequestMethod设置。代码如下:

String httpUrl = "http://www.bug315.com/getUser.jsp";

String resultData = "";

URL url = null;

try {

    url = new URL(httpUrl);

} catch (MalformedURLException e) {

    Log.e(DEBUG_TAG, "MalformedURLException");

}

if (url != null) {  

    try {

        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();  

        //因为这个是post请求,设立需要设置为true  

        urlConn.setDoOutput(true);  

        urlConn.setDoInput(true);

        urlConn.setRequestMethod("POST"); // 设置以POST方式   

        urlConn.setUseCaches(false);  

        urlConn.setInstanceFollowRedirects(true); 

        urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");  

        // 这些配置必须要在connect之前完成,  

        // 要注意的是connection.getOutputStream会隐含的进行connect。  

        urlConn.connect();  

         

        // DataOutputStream流

        DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());

        String content = "name=" + URLEncoder.encode("张三", "GB2312");    

        out.writeBytes(content);   

        out.flush();

        out.close();

    } catch(Exception e) {

        //

    }

}

 

2、HttpClient接口

        使用Apache提供的HttpClient接口同样可以进行HTTP操作。对于GET和POST请求方法的操作有所不同。GET方法的操作代码示例如下:

String httpUrl = "http://www.bug315.com/getUser.jsp?par=123";  

// HttpGet连接对象  

HttpGet httpRequest = new HttpGet(httpUrl);   

HttpClient httpclient = new DefaultHttpClient();  

HttpResponse httpResponse = httpclient.execute(httpRequest);  

// 请求成功  

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  

    // 取得返回的字符串  

    String strResult = EntityUtils.toString(httpResponse.getEntity());  

    mTextView.setText(strResult);  

} else {  

    mTextView.setText("请求错误!");  

}

 

使用POST方法进行参数传递时,需要使用NameValuePair来保存要传递的参数。另外,还需要设置所使用的字符集。代码如下所示:

String httpUrl = "http://www.bug315.com/getUser.jsp";    

HttpPost httpRequest = new HttpPost(httpUrl);

List<NameValuePair> params = new ArrayList<NameValuePair>();    

params.add(new BasicNameValuePair("userId", "123"));  

HttpEntity httpentity = new UrlEncodedFormEntity(params, "GB2312"); //设置字符集 

httpRequest.setEntity(httpentity); 

//取得默认的HttpClient  

HttpClient httpclient = new DefaultHttpClient();  

//取得HttpResponse  

HttpResponse httpResponse = httpclient.execute(httpRequest);  

//HttpStatus.SC_OK表示连接成功  

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  

    // 取得返回的字符串  

    String strResult = EntityUtils.toString(httpResponse.getEntity());  

    mTextView.setText(strResult);  

} else {  

    mTextView.setText("请求错误!");  

}

        HttpClient实际上是对Java提供方法的一些封装,在HttpURLConnection中的输入输出流操作,在这个接口中被统一封装成了HttpPost(HttpGet)和HttpResponse,这样,就减少了操作的繁琐性。

 

 

分享到:
评论

相关推荐

    android httpclient demo

    在Android开发中,HTTP通信是应用与服务器交互的重要方式之一,`Android HttpClient`库就是用于实现这...虽然HttpClient已逐渐被其他更现代的库取代,但它仍然是理解HTTP请求原理和实践Android网络编程的一个良好起点。

    android httpClient

    尽管如此,对于理解Android网络编程的基础和历史,HttpClient仍然是一个重要的知识点。 标题“android httpClient”指出我们要讨论的是Android环境下使用HttpClient进行网络通信的相关技术。HttpClient允许开发者...

    Android HttpClient源码

    尽管现在推荐使用其他替代方案,但HttpClient仍然是一个学习HTTP通信和网络编程的宝贵资源。通过分析和使用它的源码,开发者可以学到如何处理网络异常、优化网络请求和构建高效的数据抓取工具。

    Android 4.0 网络编程详解 王家林.pdf

    总结来说,“Android 4.0 网络编程详解”这篇文档可能详细介绍了Android 4.0版本的网络API使用方法、网络通信的最佳实践、网络编程中常见的问题和解决方案等。献给所有对技术抱有好奇心和热情的软件工程师们,意味着...

    Android HttpClient Network Lib

    在Android开发中,网络通信是应用功能不可或缺的一部分。HttpClient库为开发者提供了一种方便、...虽然HttpClient已不再是最推荐的网络库,但它仍然是Android网络编程历史上的一个重要里程碑,值得我们去了解和学习。

    android4.0网络编程详解——源码

    在Android 4.0(Ice Cream Sandwich)系统中,网络编程是实现应用程序与远程服务器交互的重要部分。本章将深入探讨如何在Android平台上进行网络操作,包括基础的HTTP请求、数据传输、网络状态监听以及更高级的Socket...

    android网络编程基础

    在Android平台上进行网络编程是开发应用不可或缺的一部分,它允许应用程序与远程服务器进行数据交互,实现如下载、上传、同步等功能。本节将深入探讨Android网络编程的基础知识,主要围绕Java网络编程这一核心概念...

    Android4.0网络编程详解.pdf

    但是,基于标题“Android4.0网络编程详解.pdf”,我们可以详细探讨Android 4.0版本中的网络编程相关知识点。 Android 4.0,代号为“冰激凌三明治”,是Google在2011年发布的一个重要的Android操作系统版本,它整合...

    android网络编程.pdf

    ### Android网络编程基础知识点 #### 一、网络状态检测 在Android开发中,为了确保应用程序能够根据当前网络环境做出响应,通常需要先检测设备的网络连接状态。这可以通过`ConnectivityManager`类来实现。 1. **...

    Http(get)请求数据Android Studio使用HttpClient

    总之,了解如何使用`HttpClient`进行GET请求是Android开发的基础技能,但随着技术的发展,建议学习和使用更现代的网络库,以提升应用的效率和维护性。在实际项目中,务必考虑兼容性和最佳实践,以确保应用程序的稳定...

    Android httpclient httpmine4j

    总的来说,`Android httpclient httpmine4j`的使用主要是为了在Android应用中实现文件上传功能,通过`httpclient`进行网络通信,`httpmime`提供对Multipart/form-data的支持,使得上传文件变得可能。正确地配置和...

    Android 网络编程入门之图片下载

    在Android开发中,网络编程是一项基础且重要的技能,特别是在处理数据获取、文件传输等方面。本教程将引导初学者进入Android网络编程的世界,专注于图片下载这一实际应用。我们将使用Tomcat服务器来存储和提供图片,...

    android HttpClient 上传图片

    在Android开发中,使用`HttpClient`进行图片上传是一项常见的需求,尤其在实现用户头像上传、照片分享等功能时。下面将详细解析如何利用`HttpClient`完成这一任务。 ### 使用`HttpClient`上传图片的关键步骤 #### ...

    ANDROID 4.0网络编程详解代码

    在Android开发中,网络编程是不可或缺的一部分,尤其是在Android 4.0(Ice Cream Sandwich)时期。这个阶段的Android系统引入了许多新的特性和改进,对于网络通信的支持也更加完善。本书"ANDROID 4.0网络编程详解...

    Android 4.0 网络编程详解代码

    1. **网络连接API**:Android提供了多种方式来实现网络连接,包括HttpURLConnection、HttpClient(虽然在Android 5.0后被弃用)、以及第三方库如OkHttp。源码中可能涵盖了这些API的使用,通过实例演示如何发起HTTP...

    android4 网络编程详解 源代码

    在Android开发中,网络编程是不可或缺的一部分,尤其是在Android 4.x时代,许多应用程序都需要与服务器进行数据交互,如获取新闻、上传用户数据、同步账户信息等。本资源提供了"android4 网络编程详解 源代码",旨在...

    Android 4.0 网络编程详解代码(共7个项目)

    在Android开发中,网络编程是不可或缺的一部分,尤其是在Android 4.0时代,它为开发者提供了丰富的功能和优化的性能。本资源包含7个具体的项目,旨在深入解析Android 4.0网络编程的各种技术和实践,帮助开发者提升...

    android4.0网络编程

    - Android系统提供了一系列API来支持网络编程,包括HttpURLConnection、HttpClient和OkHttp等库。 - HttpURLConnection是Java标准库的一部分,适用于简单的HTTP请求,支持HTTP/1.1协议,具有低资源消耗的优点。 -...

    android 网络编程详解代码第7章(android的Socket编程)

    对于更高级的网络编程,如HTTP、HTTPS协议,Android提供了HttpURLConnection、HttpClient(已被弃用)、OkHttp等库。这些库可以帮助我们更容易地处理HTTP请求和响应,例如GET、POST、PUT、DELETE等操作。但是,如果...

Global site tag (gtag.js) - Google Analytics