Android上使用HttpURLConnection发送HTTP请求

来源:互联网 发布:背单词软件哪个好 编辑:程序博客网 时间:2024/04/27 19:39

Android上使用HttpURLConnection发送HTTP请求


  • WebView 的引入
    WebView是一个Android早有的控件,它能在应用程序里嵌入一个浏览器,实现网页展示.

WebView已经在后台帮我们处理好发送HTTP请求,接受服务器响应,解析返回数据

先用一个小demo实现一下:

MainActivity:

        setContentView(R.layout.activity_main);        wv=(WebView)findViewById(R.id.webView1);        //使WebView支持JS脚本        wv.getSettings().setJavaScriptEnabled(true);        wv.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url){                //加载网页                view.loadUrl(url);                return true;            }                   });        wv.loadUrl("http://www.baidu.com");

这里写图片描述


HttpURLConnection

尽管WebView已经封装了解析网页的大部分流程,我们通过另一个例子,HttpURLConnection来获取网页源码并进行解析

在activity_main中定义webveiw,设置全屏

  1. 在AndroidManifest.xml声明访问网络的权限 (uses-permissionAndroidStdi;name=”android.permission.INTERNET”)

  2. 定义一个URL对象对要解析的网站(String)进行解析
    URL httpUrl=new URL(url)

  3. 通过URL对象获取连接
    HttpURLConnection conn= (HttpURLConnection) httpUrl.openConnection();
    设置属性:
    //获取时间
    conn.setReadTimeout(5000);
    //请求方式
    conn.setRequestMethod(“GET”);

  4. 对conn的输入流进行读取转成StringBuffer

final StringBuffer sb = new StringBuffer();                BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));                String str;                             while ((str=reader.readLine())!=null) {                    sb.append(str);                         }
  1. handler新线程中对StringBuffer进行解析
 handler.post(new Runnable() {                    @Override                    public void run() {                        webView.loadDataWithBaseURL(url,sb.toString(),"text/html","utf-8",null);                    }                });

  • 结果:
    这里写图片描述

参考代码: 第一行代码, 慕课网

0 0