zoukankan      html  css  js  c++  java
  • Android使用HttpClient方法和易错问题

    HttpClient为Android开发人员提供了跟简洁的操作Http网络连接的方法,在连接过程中也有两种方式,get和post,先看一下怎样实现的

    默认是get方式

    //先将參数放入List,再对參数进行URL编码  
    List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();  
    params.add(new BasicNameValuePair("param1", "中国"));  
    params.add(new BasicNameValuePair("param2", "value2"));  
    //baseUrl             
    String baseUrl = "http://www.baidu.com";  
      
    //将URL与參数拼接  
    HttpGet getMethod = new HttpGet(baseUrl + "?" + param);  
                  
    HttpClient httpClient = new DefaultHttpClient();  
      
    try {  
        HttpResponse response = httpClient.execute(getMethod); //发起GET请求  
      
        Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码  
        Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取server响应内容  
    } catch (ClientProtocolException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    } catch (IOException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  


    post方式

    //和GET方式一样,先将參数放入List  
    params = new LinkedList<BasicNameValuePair>();  
    params.add(new BasicNameValuePair("param1", "Post方法"));  
    params.add(new BasicNameValuePair("param2", "第二个參数"));  
                  
    try {  
        HttpPost postMethod = new HttpPost(baseUrl);  
        postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将參数填入POST Entity中  
                      
        HttpResponse response = httpClient.execute(postMethod); //运行POST方法  
        Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码  
        Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容  
                      
    } 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();  
    }  
    假设须要在获得网络资源后,去更新UI的一些东西,须要使用异步的方式,否则会错误发生

    Handler handler = new Handler() {
    
            @Override
            public void handleMessage(Message msg) {
    
                if (msg.what == 0x123) {
                    tv.setText(result);
                }
            }
    
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            tv = (TextView) findViewById(R.id.tv);
            result = "";
    
            final HttpClient httpclient = new DefaultHttpClient();
    
            new Thread() {
                public void run() {
                    HttpGet httpRequest = new HttpGet(
                            "http://www.baidu.com");
    
                    try {
                        HttpResponse httpResponse = httpclient.execute(httpRequest);
                        if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                            // 取得返回的字符串
                            result = EntityUtils.toString(httpResponse.getEntity());
                          
                            //tv.setText(result);//假设在这里来使用会报错
                          Message msg = new Message();
                           msg.what = 0x123;
                           handler.sendMessage(msg);
                        }
                    } catch (ClientProtocolException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }.start();
        
        }




  • 相关阅读:
    js兼容性——获取当前浏览器窗口的宽高
    pip 换源
    5 二分查找 算法
    顺序查找 冒泡 快排 等
    4 顺序表和链表
    python垃圾回收机制
    3 栈 队列 双头队列
    2 数据结构的性能分析 timeit
    1 时间复杂度
    线程池 爬取一本小说
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4079959.html
Copyright © 2011-2022 走看看