一、自定义异步的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();
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
猜你喜欢
  • 2021-07-22
  • 2022-12-23
  • 2022-01-09
  • 2022-12-23
  • 2021-10-22
  • 2021-11-25
  • 2022-12-23
相关资源
相似解决方案