zoukankan      html  css  js  c++  java
  • android HTTPclient

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

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

    1.Get 请求

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

      

    2.Post 请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    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请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    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请求

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    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是我的一个小项目中的类 

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

  • 相关阅读:
    iOS input被键盘遮挡
    js解析xml出现的问题总结
    Java——操作Excel表格,读取表格内容
    进销存管理系统——代码架构
    转换机和路由器工作原理
    考勤系统代码分析——主页布局easyui框架
    考勤系统——代码分析datagrid
    测试知识整理——基础篇
    Base64编码原理分析
    考勤系统——代码分析
  • 原文地址:https://www.cnblogs.com/HCT118/p/5069139.html
Copyright © 2011-2022 走看看