Android上使用HttpURLConnection发送HTTP请求

刺骨的言语ヽ痛彻心扉 2022-07-16 00:18 260阅读 0赞

Android上使用HttpURLConnection发送HTTP请求

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

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

先用一个小demo实现一下:

MainActivity:

  1. setContentView(R.layout.activity_main);
  2. wv=(WebView)findViewById(R.id.webView1);
  3. //使WebView支持JS脚本
  4. wv.getSettings().setJavaScriptEnabled(true);
  5. wv.setWebViewClient(new WebViewClient(){
  6. @Override
  7. public boolean shouldOverrideUrlLoading(WebView view, String url){
  8. //加载网页
  9. view.loadUrl(url);
  10. return true;
  11. }
  12. });
  13. 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();

    1. BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    2. String str;
    3. while ((str=reader.readLine())!=null) {
    4. sb.append(str);
    5. }
  5. handler新线程中对StringBuffer进行解析

    handler.post(new Runnable() {

    1. @Override
    2. public void run() {
    3. webView.loadDataWithBaseURL(url,sb.toString(),"text/html","utf-8",null);
    4. }
    5. });

  • 结果:
    这里写图片描述

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

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读