一、自定义异步的HTTP请求
1.自定义一个AsyncHttpClient类,用于处理HTTP请求,实际原理就是新开启一个线程,调用HttpClient处理GET和POST请求
package com.shz.services; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; 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 android.os.Message; public class MyAsyncHttpClient { public void get(final String url,final MyHandler handler) { new Thread(){ public void run() { Message msg = new Message(); try { HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); HttpResponse response = client.execute(httpGet); int code = response.getStatusLine().getStatusCode(); if(code == 200) { msg.what = 1; msg.obj = loginService.readInputStream(response.getEntity().getContent()); } else { msg.what = 2; msg.obj = "请求失败,错误码:"+code; } } catch (Exception e) { msg.what = 2; msg.obj = e.getMessage(); } finally{ handler.sendMessage(msg); } }; }.start(); } public void post(final String url,final List<NameValuePair> pairs,final MyHandler handler) { new Thread(){ public void run() { Message msg = new Message(); try { HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); if(pairs != null) { post.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8")); } HttpResponse response = client.execute(post); int code = response.getStatusLine().getStatusCode(); if(code == 200) { msg.what = 1; msg.obj = loginService.readInputStream(response.getEntity().getContent()); } else { msg.what = 2; msg.obj = "请求失败,错误码:"+code; } } catch (Exception e) { msg.what = 2; msg.obj = e.getMessage(); } finally{ handler.sendMessage(msg); } }; }.start(); } }