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();
        
        }




  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4079959.html
Copyright © 2011-2022 走看看