HTTPClient模块的HttpGet和HttpPost

系统 1721 0

 

 

 

 

 

 

 

 

--------- 部分实例

 

try {
                    HttpResponse response = client.execute(myget);
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(response.getEntity()
                                    .getContent()));
                     for (String s = reader.readLine(); s != null; s = reader
                            .readLine()) {
                         builder.append(s);
                    }
                    JSONObject jsonObject = new JSONObject(builder.toString());
                    error = jsonObject.getInt("errno");
                    String errormsg = jsonObject.getString("errmsg");
                    Log.v("wgp",myget.getURI().toString());
                    Log.v("wgp", "error=" + error);
                    Log.v("wgp", "errormsg=" + errormsg);
                    if (error == 0) {
                        array = jsonObject.getJSONArray("data");
                        mFavoriteList = new ArrayList<FavoriteItem>();
                        FavoriteItem item = null;
                        String srcType;
                        for (int i = 0; i < array.length(); i++) {
                            item = new FavoriteItem();
                            item.setId(array.getJSONObject(i).getInt("id"));
                            item.setUserId(array.getJSONObject(i).getInt("userid"));
                            item.setUsername(array.getJSONObject(i).getString("username"));
                            item.setType(array.getJSONObject(i).getInt("type"));
                            item.setCid(array.getJSONObject(i).getInt("cid"));
                            item.setTitle(array.getJSONObject(i).getString("title"));
                            item.setUrl(array.getJSONObject(i).getString("url"));
                            item.setTag(array.getJSONObject(i).getString("tag"));
                            item.setSrc(array.getJSONObject(i).getString("src"));
                            item.setCreateDate(array.getJSONObject(i).getString("created"));
                            item.setModifiedDate(array.getJSONObject(i).getString("modified"));
                            srcType = array.getJSONObject(i).getString("src_type");
                            if(srcType != null && srcType.equals("cps")){
                                item.setSrc_type("industry");
                            }else{
                                item.setSrc_type(srcType);
                            }
                            mFavoriteList.add(item);
                        }
                        if (mFavoriteList.size() == 0) {
                            handler.sendEmptyMessage(-1);
                        } else {
                            handler.sendEmptyMessage(1);//更新主UI
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    handler.sendEmptyMessage(-1);
                } finally {
                }

 

 

 

 

=============

 

 

 

 

 

Android SDK集成了Apache HttpClient模块。要注意的是,这里的Apache HttpClient模块是 HttpClient 4.0(org.apache.http.*),而不是常见的 Jakarta Commons HttpClient 3.x(org.apache.commons.httpclient.*)。

           HttpClient常用HttpGet和HttpPost这两个类,分别对应Get方式和Post方式。

 

 

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

 

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

           2. 使用 DefaultHttpClient 类的 execute 方法发送 HTTP GET HTTP 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( "\r" "" ); //去掉返回结果中的"\r"字符,否则会在结果字符串后面显示一个小方格     
  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" /> 

HTTPClient模块的HttpGet和HttpPost


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论