zoukankan      html  css  js  c++  java
  • 请求对象Android 网络操作常用的两个类

    工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下请求对象

         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.创立HttpGetHttpPost对象,将要请求的URL通过构造方法传入HttpGetHttpPost对象。

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

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

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

        

        上面给出一些实例:

        

        Get方法:

        

    // HttpGet方法请求  
    public static void requestByHttpGet() throws Exception {  
        String path = "https://reg.163.com/logins.jsp?id=helloworld&pwd=android";  
        // 新建HttpGet对象  
        HttpGet httpGet = new HttpGet(path);  
        // 获得HttpClient对象  
        HttpClient httpClient = new DefaultHttpClient();  
        // 获得HttpResponse实例  
        HttpResponse httpResp = httpClient.execute(httpGet);  
        // 判断是够请求成功  
        if (httpResp.getStatusLine().getStatusCode() == HTTP_200) {  
            // 获得返回的数据  
            String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8");  
            Log.i(TAG_HTTPGET, "HttpGet方法请求成功,返回数据如下:");  
            Log.i(TAG_HTTPGET, result);  
        } else {  
            Log.i(TAG_HTTPGET, "HttpGet方法请求失败");  
        }  
    }
        每日一道理
    一个安静的夜晚,我独自一人,有些空虚,有些凄凉。坐在星空下,抬头仰望美丽天空,感觉真实却由虚幻,闪闪烁烁,似乎看来还有些跳动。美的一切总在瞬间,如同“海市蜃楼”般,也只是刹那间的一闪而过,当天空变得明亮,而这星星也早已一同退去……
    public String doGet()  
        {  
            String uriAPI = "http://XXXXX?str=I+am+get+String";  
            String result= "";  
    //      HttpGet httpRequst = new HttpGet(URI uri);  
    //      HttpGet httpRequst = new HttpGet(String uri);  
    //      创立HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。  
            HttpGet httpRequst = new HttpGet(uriAPI);  
      
    //      new DefaultHttpClient().execute(HttpUriRequst requst);  
            try {  
       //使用DefaultHttpClient类的execute方法发送HTTP GET请求,并返回HttpResponse对象。  
                HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);//其中HttpGet是HttpUriRequst的子类  
                if(httpResponse.getStatusLine().getStatusCode() == 200)  
                {  
                    HttpEntity httpEntity = httpResponse.getEntity();  
                    result = EntityUtils.toString(httpEntity);//取出应答字符串  
                // 一般来说都要删除过剩的字符   
                    result.replaceAll("\r", "");//去掉返回结果中的"\r"字符,否则会在结果字符串前面显示一个小方格    
                }  
                       else   
                            httpRequst.abort();  
               } catch (ClientProtocolException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
                result = e.getMessage().toString();  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
                result = e.getMessage().toString();  
            }  
            return result;  
        }

        Post方法:

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

        

        public String doPost() { String uriAPI = "http://XXXXXX";//Post方法没有参数在这里 String result = ""; HttpPost httpRequst = new HttpPost(uriAPI);//创立HttpPost对象 List <NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("str", "I am Post String")); try { httpRequst.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst); if(httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity httpEntity = httpResponse.getEntity(); result = EntityUtils.toString(httpEntity);//取出应答字符串 } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); result = e.getMessage().toString(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); result = e.getMessage().toString(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); result = e.getMessage().toString(); } return result; }

        

        

        

        // HttpPost方法请求 public static void requestByHttpPost() throws Exception { String path = "https://reg.163.com/logins.jsp"; // 新建HttpPost对象 HttpPost httpPost = new HttpPost(path); // Post参数 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("id", "helloworld")); params.add(new BasicNameValuePair("pwd", "android")); // 设置字符集 HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8); // 设置参数实体 httpPost.setEntity(entity); // 获得HttpClient对象 HttpClient httpClient = new DefaultHttpClient(); // 获得HttpResponse实例 HttpResponse httpResp = httpClient.execute(httpPost); // 判断是够请求成功 if (httpResp.getStatusLine().getStatusCode() == HTTP_200) { // 获得返回的数据 String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); Log.i(TAG_HTTPGET, "HttpPost方法请求成功,返回数据如下:"); Log.i(TAG_HTTPGET, result); } else { Log.i(TAG_HTTPGET, "HttpPost方法请求失败"); } }

        

        

        

    文章结束给大家分享下程序员的一些笑话语录: 自从有了Photoshop,我再也不相信照片了!(没有Photoshop的年代,胶片照片年代做假的也不少,那时候都相信假的!)

  • 相关阅读:
    Jenkins+Docker+Git+Harbor流水线打包
    docker镜像批量打包
    二进制安装docker-18.06.3-ce
    kubeadm添加新master或node
    Host is not allowed to connect to this MySQL server
    RecyclerFullyManagerDemo【ScrollView里嵌套Recycleview的自适应高度功能】
    RecyclerSwipeAdapterDemo【使用AndroidSwipeLayout用于列表项侧滑功能】
    RecyclerViewItemTouchHelperDemo【使用ItemTouchHelper进行拖拽排序功能】
    Android APP应用启动页白屏(StartingWindow)优化
    KeyboardUtil【软键盘弹出后输入框上移一定的高度】
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3089700.html
Copyright © 2011-2022 走看看