android之HttpClient-飞外

Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类。

下面分别讲一下怎么用HttpClient实现get,post请求。

1.Get 请求

HttpGet get = new HttpGet("http://www.baidu.com");HttpClient hClient = new DefaultHttpClient();httpResponse = hClient.execute(get);

2.Post 请求

Map String, String map = new HashMap String, String map.put("id", id);map.put("name", name);map.put("permission", String.valueOf(permission)); List NameValuePair list = new ArrayList NameValuePair  if(map != null !map.isEmpty()){ for(Map.Entry String, String entry : map.entrySet()){//迭代器 //键值对 NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue()); list.add(nameValuePair);UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode);//使用post方式提交数据HttpPost post = new HttpPost(path);post.setEntity(entity);//请求体中//默认客户端HttpClient client = httpClient;HttpResponse httpResponse = client.execute(post);

3.代码实例:

先是get请求

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.DefaultHttpClientConnection; import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity {  private Button requestButton;  private HttpResponse httpResponse;  private HttpEntity entity;  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  requestButton = (Button) findViewById(R.id.requestButton);  requestButton.setOnClickListener(new OnClickListener() {  public void onClick(View v) {  new Thread(new Downtest()).start();  });  class Downtest implements Runnable{  public void run() {  //生成一个请求对象,请求  HttpGet get = new HttpGet("http://www.baidu.com");  //生成一个Http客户端对象  HttpClient hClient = new DefaultHttpClient();  //使用Http客户端发送请求对象  InputStream inputStream = null;  try {  httpResponse = hClient.execute(get);//httpResponse返回的响应  //返回的响应数据就放在里边  entity = httpResponse.getEntity();  inputStream = entity.getContent();  BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));  String result = "";  String line = "";  while((line = reader.readLine())!= null){  result = result+ line;  System.out.println(result);  } catch (ClientProtocolException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }finally{  try{  inputStream.close();  }catch(Exception e){  e.printStackTrace(); 

再是post请求

public class AccountHttpUtils {  //private static String PATH = "http://192.168.253.1:8088/CallName/servlet/AccountServler";  private static HttpClient httpClient;  public AccountHttpUtils(HttpClient httpClient) {  this.httpClient = httpClient;  public static String sendHttpClient(String path,Map String,String map,String encode){  List NameValuePair list = new ArrayList NameValuePair  if(map != null !map.isEmpty()){  for(Map.Entry String, String entry : map.entrySet()){//迭代器  //键值对  NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue());  list.add(nameValuePair);  try {  //实现将请求的参数封装到表单中,  UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode);  //使用post方式提交数据  HttpPost post = new HttpPost(path);  post.setEntity(entity);//请求体中  //默认客户端  HttpClient client = httpClient;  HttpResponse httpResponse = client.execute(post);  if(httpResponse.getStatusLine().getStatusCode() == 200){  HttpEntity httpEntity = httpResponse.getEntity();  InputStream inputStream = httpEntity.getContent();  return changeInputeStream(inputStream, encode);  } catch (UnsupportedEncodingException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } catch (ClientProtocolException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  return "";  /**  * 将一个输入流转换成字符串  * @param inputStream  * @param encode  * @return  private static String changeInputeStream(InputStream inputStream,String encode) {  //通常叫做内存流,写在内存中的  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();  byte[] data = new byte[1024];  int len = 0;  String result = "";  if(inputStream != null){  try {  while((len = inputStream.read(data))!=-1){  data.toString();  outputStream.write(data, 0, len);  //result是在服务器端设置的doPost函数中的  result = new String(outputStream.toByteArray(),encode);  outputStream.flush();  outputStream.close();  inputStream.close();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  return result;  public static String set(String id,String name,int permission) {  // TODO Auto-generated method stub  Map String, String map = new HashMap String, String  map.put("id", id);  map.put("name", name);  map.put("permission", String.valueOf(permission));  String result = AccountHttpUtils.sendHttpClient(AbstractHttpUtils.PATH+"servlet/AccountServler", map, "utf-8");  System.out.println("result:"+ result);  return result; 

4.get请求访问的是百度,返回的是百度首页的源代码

post是我的一个小项目中的类

不过结构已经很清晰啦。。。。

留着备用。。。。。。

http://www.cnblogs.com/jycboy/p/httpclient.html