码迷,mamicode.com
首页 > 移动开发 > 详细

android使用apache httpclient发送post请求

时间:2014-08-02 18:24:03      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:httpclient apache

package com.liuc;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;

public class HttpPostUtil {

	public static String sendHttpPost(Map<String, 	String> map,String encode,String path){
		
		List<NameValuePair> list=new ArrayList<NameValuePair>();
		if (map!=null&&!map.isEmpty()) {
			for(Map.Entry<String, String> entry:map.entrySet()){
				list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
			}
		}
		try {
			//实现将参数封装到表单中,也就是请求体重
			UrlEncodedFormEntity entity=new UrlEncodedFormEntity(list,encode);
			//使用post方式提交数据
			HttpPost httpPost=new HttpPost(path);
			httpPost.setEntity(entity);
			RequestConfig requestConfig = RequestConfig.custom().
					setSocketTimeout(2000).setConnectTimeout(2000).build();//4.3之后的设置请求和传输超时时间
			httpPost.setConfig(requestConfig);
			//执行post请求
			//3.X是这样的
			//HttpClient httpClient=new DefaultHttpClient();
			//4.x是这样的
			HttpClient httpClient = HttpClients.createDefault();
			HttpResponse httpResponse=httpClient.execute(httpPost);
			
			if (httpResponse.getStatusLine().getStatusCode()==200) {
				return getStringForInputStream(httpResponse.getEntity().getContent(),encode);
			}
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return path;
		
	}

	private static String getStringForInputStream(InputStream inputStream,
			String encode) {
		ByteArrayOutputStream stream=new ByteArrayOutputStream();
		byte[] data=new byte[1024];
		int len=0;
		String result="";
		try {
			if (inputStream != null) {
				while ((len = inputStream.read(data)) != -1) {
					stream.write(data, 0, len);
				}
				result=new String(stream.toByteArray(),encode);
			}
		} catch (Exception e) {
		}
		return result;
	}

}

对于各个版本写法的区别。可以参考:http://www.open-open.com/lib/view/open1383751765321.html

android使用apache httpclient发送post请求,布布扣,bubuko.com

android使用apache httpclient发送post请求

标签:httpclient apache

原文地址:http://blog.csdn.net/shanhuhau/article/details/38349857

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!