• 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是我的一个小项目中的类 

  • 相关阅读:
    【转】解决在Android设备播放音频与其他应用重音的问题,并监听耳机的控制按钮
    【转】wamp 3.0.6(apache 2.4.23) 403 forbidden 解决办法
    身份证第18位(校验码)的计算方法
    【转】Win10开机密码忘了?教你破解Win10开机密码
    【转】具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能
    钉钉自定义机器人 发送文本 换行 无效果
    屏蔽右键+f12
    【转】理解WebKit和Chromium: JavaScript引擎简介
    第2章 排序 | 第10节 计数排序练习题 && 基数排序
    图像处理-深入探索插值操作
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5726015.html
Copyright © 2020-2023  润新知