Android URLConnection发送Get请求 HttpGet封装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android URLConnection发送Get请求 HttpGet封装相关的知识,希望对你有一定的参考价值。

一.使用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封装的主要内容,如果未能解决你的问题,请参考以下文章

android开发笔记之网络编程—使用HTTP进行网络编程

Android中HttpURLConnection使用详解

如何在 URLConnection 中发送 cookie?

利用URLConnection来发送POST和GET请求

URLConnection 或 HTTPClient:哪个提供更好的功能和更高的效率?

在 iOS 上发送 HTTP POST 请求