zoukankan      html  css  js  c++  java
  • HTTPClient模块的HttpGet和HttpPost

    无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。

               1.创建HttpGetHttpPost对象,将要请求的URL通过构造方法传入HttpGetHttpPost对象。

               2.使用DefaultHttpClient类的execute方法发送HTTP GETHTTP POST请求,并返回HttpResponse对象。

               3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

               如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

              

               HttpGet

    1.  public String doGet()  
    2.     {  
    3.         String uriAPI = "http://XXXXX?str=I+am+get+String";  
    4.         String result= "";  
    5. //      HttpGet httpRequst = new HttpGet(URI uri);  
    6. //      HttpGet httpRequst = new HttpGet(String uri);  
    7. //      创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。  
    8.         HttpGet httpRequst = new HttpGet(uriAPI);  
    9.   
    10. //      new DefaultHttpClient().execute(HttpUriRequst requst);  
    11.         try {  
    12.    //使用DefaultHttpClient类的execute方法发送HTTP GET请求,并返回HttpResponse对象。  
    13.             HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);//其中HttpGet是HttpUriRequst的子类  
    14.             if(httpResponse.getStatusLine().getStatusCode() == 200)  
    15.             {  
    16.                 HttpEntity httpEntity = httpResponse.getEntity();  
    17.                 result = EntityUtils.toString(httpEntity);//取出应答字符串  
    18.             // 一般来说都要删除多余的字符   
    19.                 result.replaceAll(" ", "");//去掉返回结果中的" "字符,否则会在结果字符串后面显示一个小方格    
    20.             }  
    21.                    else   
    22.                         httpRequst.abort();  
    23.            } catch (ClientProtocolException e) {  
    24.             // TODO Auto-generated catch block  
    25.             e.printStackTrace();  
    26.             result = e.getMessage().toString();  
    27.         } catch (IOException e) {  
    28.             // TODO Auto-generated catch block  
    29.             e.printStackTrace();  
    30.             result = e.getMessage().toString();  
    31.         }  
    32.         return result;  
    33.     }  


                   HttpPost

                  如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

    1. public String doPost()  
    2.     {  
    3.         String uriAPI = "http://XXXXXX";//Post方式没有参数在这里  
    4.         String result = "";  
    5.         HttpPost httpRequst = new HttpPost(uriAPI);//创建HttpPost对象  
    6.           
    7.         List <NameValuePair> params = new ArrayList<NameValuePair>();  
    8.         params.add(new BasicNameValuePair("str", "I am Post String"));  
    9.           
    10.         try {  
    11.             httpRequst.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));  
    12.             HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);  
    13.             if(httpResponse.getStatusLine().getStatusCode() == 200)  
    14.             {  
    15.                 HttpEntity httpEntity = httpResponse.getEntity();  
    16.                 result = EntityUtils.toString(httpEntity);//取出应答字符串  
    17.             }  
    18.         } catch (UnsupportedEncodingException e) {  
    19.             // TODO Auto-generated catch block  
    20.             e.printStackTrace();  
    21.             result = e.getMessage().toString();  
    22.         }  
    23.         catch (ClientProtocolException e) {  
    24.             // TODO Auto-generated catch block  
    25.             e.printStackTrace();  
    26.             result = e.getMessage().toString();  
    27.         }  
    28.         catch (IOException e) {  
    29.             // TODO Auto-generated catch block  
    30.             e.printStackTrace();  
    31.             result = e.getMessage().toString();  
    32.         }  
    33.         return result;  
    34.     }  



              以发送连接请求时,需要设置链接超时和请求超时等参数,否则会长期停止或者崩溃。

    1. HttpParams httpParameters = new BasicHttpParams();  
    2. HttpConnectionParams.setConnectionTimeout(httpParameters, 10*1000);//设置请求超时10秒  
    3. HttpConnectionParams.setSoTimeout(httpParameters, 10*1000); //设置等待数据超时10秒  
    4. HttpConnectionParams.setSocketBufferSize(params, 8192);  
    5. HttpClient httpclient = new DefaultHttpClient(httpParameters); //此时构造DefaultHttpClient时将参数传入  
    6.   
    7.   
    8.   
    9. 由于是联网,在AndroidManifest.xml中添加网络连接的权限  
    10. <uses-permission android:name="android.permission.INTERNET"/> 
  • 相关阅读:
    sqli-labs(30)
    sqli-labs(29)
    sqli-labs29-31关Background-6 服务器(两层)架构
    HA高可用的搭建
    克隆虚拟机,如何将克隆虚拟的网卡设置为eth0
    mysql1主多从配置
    关于mysql binlog日志的格式说明
    mysql主从同步
    tomcat的安装
    获取系统的IP
  • 原文地址:https://www.cnblogs.com/dubo-/p/7912830.html
Copyright © 2011-2022 走看看