`
iaiai
  • 浏览: 2196813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android HttpClient网络通信

阅读更多
封装Get/Post两种提交的方法类,
HttpUtil.java类:
package com.water.activity;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;

public class HttpUtil {

	/**
	 * http访问数据,默认返回的数据为UTF-8编码
	 * 
	 * @param url
	 *            url地址
	 * @param method
	 *            提交方式
	 * @return
	 * @throws IOException
	 */
	public static String getUrl(String url) throws IOException {
		HttpGet request = new HttpGet(url);
		HttpClient httpClient = new DefaultHttpClient();
		HttpResponse response = httpClient.execute(request);
		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			return EntityUtils.toString(response.getEntity());
		} else {
			return "";
		}
	}

	/**
	 * post提交数据
	 * 
	 * @param url
	 *            提交地址
	 * @param params
	 *            参数
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public static String postUrl(String url, Map<String, String> params)
			throws ClientProtocolException, IOException {
		return postUrl(url, params, "UTF-8");
	}

	/**
	 * post提交数据
	 * 
	 * @param url
	 *            提交地址
	 * @param params
	 *            参数
	 * @param encoding
	 *            参数编码
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public static String postUrl(String url, Map<String, String> params,
			String encoding) throws ClientProtocolException, IOException {
		List<NameValuePair> param = new ArrayList<NameValuePair>(); // 参数
		// param.add(new BasicNameValuePair("par", "request-post"));
		// //这个参数我不知道是不是非要加这个

		// 添加参数
		Iterator<Entry<String, String>> iterator = params.entrySet().iterator();
		while (iterator.hasNext()) {
			Entry<String, String> entry = iterator.next();

			param.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
		}

		HttpPost request = new HttpPost(url);
		HttpEntity entity = new UrlEncodedFormEntity(param, encoding);
		request.setEntity(entity);

		HttpClient client = new DefaultHttpClient();
		client.getParams().setParameter(
				CoreConnectionPNames.CONNECTION_TIMEOUT, 10000); // 设置请求超时时间
		client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000); // 读取超时

		HttpResponse response = client.execute(request);
		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			return EntityUtils.toString(response.getEntity());
		} else {
			return null;
		}
	}

}

MyList.java类:
package com.water.activity;

import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

public class MyList extends Activity {

	private EditText editView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		try {
			Map map = new HashMap<String, String>();
			map.put("name", "name");
			map.put("password", "password");

			String content = HttpUtil.postUrl("http://www.163.com", map);
			if (content == null) {
				Log.i("MyList", "返回值有问题!");
			} else {
				Log.i("MyList", content);
			}
		} catch (Exception e) {
			Log.i("MyList", "运行出错!");
		}
	}

}
分享到:
评论
1 楼 wenzhixin 2012-06-18  
谢谢分享~学习了

相关推荐

    Android HttpClient用到的jar包

    总之,Apache HttpClient和其相关库为Android应用提供了强大的网络通信能力,特别是处理文件上传场景。正确理解和使用这些库可以帮助开发者高效地实现与服务器的交互,提高应用程序的用户体验。

    Android HttpClient工具类

    在Android开发中,HttpClient是一个常用的网络通信库,用于与服务器进行HTTP交互。虽然在Android API Level 23之后被标记为废弃,但仍有许多开发者选择继续使用它,因为它的功能强大且灵活。本篇文章将深入探讨...

    android httpclient demo

    然而,由于Android API Level 23之后不再支持HttpClient,开发者现在更多地转向使用OkHttp或Retrofit等现代网络库。尽管如此,对于旧项目或者对HttpClient有特定需求的场景,理解其工作原理和用法仍然很有价值。 1....

    android httpClient所需jar包

    本主题聚焦于"android httpClient所需jar包"以及与之相关的ksoap2库,这些都是Android应用开发中不可或缺的部分。 首先,让我们详细了解这些jar包的作用: 1. **commons-httpclient-3.1.jar**: 这是Apache ...

    android HttpClient

    在Android应用程序中,`HttpClient`经常被用于实现网络通信,比如上传或下载文件。下面将详细讨论`HttpClient`在Android中的应用及其相关知识点。 一、`HttpClient`基础 1. `HttpClient`类:它是整个框架的核心,...

    struts2 android httpclient 上传文件

    HttpClient是Apache的一个开源库,提供了一种在Java应用程序中实现HTTP协议的方法,常用于网络通信。 1. **Struts2文件上传**: 在Struts2中,文件上传主要依赖于`struts2-convention-plugin`和`struts2-core`的`...

    android httpClient

    标题“android httpClient”指出我们要讨论的是Android环境下使用HttpClient进行网络通信的相关技术。HttpClient允许开发者发送HTTP请求并接收响应,从而实现诸如下载、上传等网络操作。 描述中提到的“简单的一个...

    Android HttpClient源码

    总的来说,理解Android HttpClient的源码能够帮助我们更好地掌握网络请求的处理,提升应用程序的性能和可靠性。尽管现在推荐使用其他替代方案,但HttpClient仍然是一个学习HTTP通信和网络编程的宝贵资源。通过分析和...

    Android HttpClient Network Lib

    总结来说,`Android HttpClient Network Lib`是一个关于如何在Android应用中使用HttpClient进行网络通信的知识点,涵盖了HttpClient的基本使用方法、优势,以及如何利用提供的jar包和源码进行开发。虽然HttpClient已...

    Android_HttpClient_jar包+HttpClientJarAndSource

    在移动开发领域,Android平台上的网络通信是一个至关重要的环节,HttpClient作为早期广泛使用的网络请求库,对于许多开发者来说并不陌生。本资源"Android_HttpClient_jar包+HttpClientJarAndSource"包含了HttpClient...

    android httpclient文件上传 http协议post get方法向服务器传输数据

    在Android开发中,HTTPClient是常用的网络通信库,它提供了HTTP协议的支持,允许应用程序通过POST和GET方法向服务器传输数据。本项目中的四个知识点聚焦于HTTPClient的使用,特别是文件上传以及HTTP的基本请求方法。...

    Android使用HttpClient上传文件到服务器完整实例

    这些库提供了网络通信的基础功能。 接下来,我们创建一个`UploadFileToServer`类,用于处理文件上传。在这个类中,我们需要创建一个`HttpClient`实例,然后构造一个`HttpPost`对象,指定上传文件的URL。例如: ```...

    android网络通信最常用三种方式 URL,HTTPClient,Socket

    含客户端与服务器端的Demo,带有详细的注释,其中URL可用于下载、加载服务器资源,httpclient可用于传输数据(get/post方式传递json),socket可用于点对点即时通信;望大家多多批评、指教!

    Android httpclient httpmine4j

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

    Android Asynchronous HTTPClient的实现和优化

    在Android开发中,网络通信是应用的核心功能之一,而`Android Asynchronous HTTPClient`(也称为AsyncHttpClient)是一个流行的库,用于实现异步HTTP请求,它使得开发者可以在不阻塞主线程的情况下执行网络操作,...

    android httpclient 访问服务器 获取json数据

    在Android开发中,HTTPClient是常用的网络通信库之一,用于与服务器进行交互,获取或发送数据。本示例主要讲解如何使用HTTPClient访问服务器并获取JSON格式的数据。JSON(JavaScript Object Notation)是一种轻量级...

    HttpClient for android 4 3 5 jar

    在Android中,HttpClient库提供了与Web服务器进行HTTP通信的能力,支持各种HTTP方法(如GET、POST等),以及处理cookies、重定向、认证等功能。这个"HttpClient for android 4.3.5 jar"包含了两个文件:`httpclient-...

    Android的HttpClient开发实例

    在Android应用开发中,`HttpClient`是一个常用的网络通信库,尤其在早期的Android版本中,它是推荐的HTTP通信方式之一。本开发实例将带你深入理解如何在Android项目中使用`HttpClient`进行网络请求,实现数据的获取...

    Android使用HttpClient和HttpsUrlConnection两种方式访问https网站

    在Android中,我们可以使用`AndroidHttpClient`,它是`HttpClient`的一个优化版本,更适合Android平台。 #### 1.1 配置HttpClient访问HTTPS(不验证证书) ```java // 创建HttpClient实例 HttpClient httpClient =...

Global site tag (gtag.js) - Google Analytics