使用UrlConnection请求一个url地址获取内容

  访问网络需要加Internet权限:android.permission.INTERNET

  使用UrlConnection请求一个url地址获取内容:
            //1.创建一个Url对象
                URL url = new URL(url_str);
            //2.获取一个UrlConnection对象
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            //3.为UrlConnection对象设置一些请求的参数,请求方式,连接的超时时间 
                connection.setRequestMethod("GET");//设置请求方式
                connection.setConnectTimeout(1000*10);//设置超时时间
            //4.在获取url请求的数据前需要判断响应码,200 :成功,206:访问部分数据成功   300:跳转或重定向  400:错误 500:服务器异常
                int code = connection.getResponseCode();
                if(code == 200){
            //5.获取有效数据,并将获取的流数据解析成String
                    InputStream inputStream = connection.getInputStream();
                    String result = StreamUtils.streamToString(inputStream);

注意事项:
        
        1. ANR:application not response 应用无响应; androoid中耗时的操作(请求网络,大文件的拷贝,数据库的操作)需要在子线程中做。
        09-02 01:52:40.711: E/ActivityManager(857): ANR in com.itheima.sourcelook (com.itheima.sourcelook/.MainActivity)

2. 4.0后网络操作强制在子线程中进行。因为网络访问是耗时的操作,可能会导致ANR
        09-02 01:57:32.879: W/System.err(1789):  android.os.NetworkOnMainThreadException

3.错误线程调用异常,子线程不能够更新UI(控件的内容)
            09-02 02:02:08.873: W/System.err(1858): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

主线程不能够做耗时的操作,网络请求就是耗时的操作需要放到子线程做。子线程不能更新控件的内容(更新Ui)。所以产生了矛盾,解决办法就是使用Handler.

时间: 2024-08-04 03:52:41

使用UrlConnection请求一个url地址获取内容的相关文章

Java小知识---Java请求一个URL。获取网站返回的数据

对url发送请求,获得返回值: public static String SendGET(String url,String param){ String result="";//访问返回结果 BufferedReader read=null;//读取访问结果 try { //创建url URL realurl=new URL(url+"?"+param); //打开连接 URLConnection connection=realurl.openConnection

C# HttpWebRequest 绝技 根据URL地址获取网页信息

如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地址获取网页信息 先来看一下代码 get方法 复制代码 publicstaticstring GetUrltoHtml(string Url,string type) { try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(U

python-获得一个URL地址的扩展名

获得一个URL地址的扩展名 如:http://www.cnblogs.com/fnng/archive/2013/05/20/3089816.html  的扩展名为html对于这个问题同样使用正则式来解决 import re def strings(url): listt = ['.php','.html','.asp','.jsp'] for lis in listt: suffix = re.findall(lis,url) //re.findall(pattern, string[, fl

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

Python脚本检测一个url地址

说明: 检测URL地址,检测依据返回的url的code地址,返回不正常,则报警 #!/usr/bin/env  python #coding:utf-8 # #Author Summer # #Create date:2015-07-24 import smtplib import string import urllib import time def email():    HOST="smtp.163.com"    FROM="***********@163.com&

java获取请求的url地址

1.获取全路径request.getRequestURL(); //得到http://localhost:8888/CRM/loginController/login 2.获取协议名和域名request.getScheme(); //得到协议名 例如:httprequest.getServerName(); //得到域名 localhost 3.获取请求所有参数 //map类型request.getParameterMap() 4.获取项目名request.getContextPath(); /

C# 通过url地址获取页面内容

using System.Net; using System.IO; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.1.88:8018/test.html?name=121212"); WebResponse response = request.GetResponse(); Stream resStream = response.GetResponseStream(); Strea

根据图片url地址获取图片的宽高

1 /** 2 * 根据img获取图片的宽高 3 * @param img 图片地址 4 * @return 图片的对象,对象中图片的真实宽高 5 */ 6 public BufferedImage getBufferedImage(String imgurl) { 7 URL url = null; 8 InputStream is = null; 9 BufferedImage img = null; 10 try { 11 url = new URL(imgurl); 12 HttpURL

用jq编码解码一个url地址

介绍一下编码解码函数对 1.    escape /unescape   主要用于汉字编码,返回字符的unicode编码值, 对“+”不能编码 2.     encodeURI / decodeURI  用于对url进行编码,但对特殊字符如+ ? # @ & 等不能编码 3,      encodeURIComponent /decodeURIComponent    用于对url进行编码,可以对特殊字符进行编码 原文地址:https://www.cnblogs.com/techliang666