zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    阿里云服务器Linux CentOS安装配置(五)jetty配置、部署
    阿里云服务器Linux CentOS安装配置(四)yum安装tomcat
    阿里云服务器Linux CentOS安装配置(三)yum安装mysql
    阿里云服务器Linux CentOS安装配置(二)yum安装svn
    【搭建git+maven+jenkins持续集成环境】[一] 搭建git服务器
    使用nginx的反向代理后play获取不到客户端的ip的问题
    MyBatis Generator配置文件翻译
    MyBatis -generator应用
    编程之术与道
    java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
  • 原文地址:https://www.cnblogs.com/jycboy/p/httpclient.html
Copyright © 2011-2022 走看看