码迷,mamicode.com
首页 > 移动开发 > 详细

Android URLConnection发送Get请求 HttpGet封装

时间:2017-11-10 21:57:47      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:static   blog   建立   cee   服务   ash   catch   android   obj   

一.使用URLConnection发送Get请求

1.与服务器建立连接:

URLConnection connection=new URL(“https://www.baidu.com/”).openConnection();

2.设置请求头(Cookie亦可通过请求头设置):

connection.setRequestProperty(“Referer”,“https://www.baidu.com/);
connection.setRequestProperty(“Cookie”,“BIDUPSID=844B9321236FFD30C304AE4CCEE0602A;BD_UPN=12314753”);

3.获取响应信息:

(1):建议使用StringBuilder拼接字符串;

(2):如果new了流对象不要忘记close。

     注意关闭顺序:关闭要与new的顺序反过来。

     抽象理解:下班回家睡觉 先进入小区,再进入家,再进入卧室;上班时就要先走出卧室,再走出家,最后走出小区。要遵循规则,不能使用闪现技能直接走出小区。

StringBuilder response=new StringBuilder();
	
            InputStream is=connection.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));
            String str;
            while ((str=br.readLine())!=null){
                response.append(str);
            }
            br.close();
            is.close();

return response.toString();

 

二.HttpGet封装

源码:

    static public String  HttpGet(String url,Map headers){

        try {
            //打开连接
            URLConnection connection=new URL(url).openConnection();

            //设置请求头
            if(headers!=null){
                Object[] objects=headers.entrySet().toArray();
                for (Object o: objects) {
                    String[] strings=o.toString().split("=");
                    connection.setRequestProperty(strings[0],strings[1]);
                }
            }
            //获取响应信息
            StringBuilder response=new StringBuilder();

            BufferedReader br=new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String str;
            while ((str=br.readLine())!=null){
                response.append(str);
            }
            br.close();

            //返回结果
            return response.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;

    }

调用:

Map headers=new HashMap();
headers.put("Referer","https://www.baidu.com/");
headers.put("Cookie","BIDUPSID=844B9321236FFD30C304AE4CCEE0602A;BD_UPN=12314753")
HttpGet("https://www.baidu.com/",headers);

 

三.android网络请求两大要素

1.申请网络权限:<uses-permission android:name="android.permission.INTERNET"></uses-permission>;

2.在子线程中访问网络。

Android URLConnection发送Get请求 HttpGet封装

标签:static   blog   建立   cee   服务   ash   catch   android   obj   

原文地址:http://www.cnblogs.com/cx98/p/7816358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!