书接上一回,写了一个Android通过URL文件下载及文件名提取;以其简单受到其他小伙伴的赞许。今天刚好需要写一个安卓版的
网页内容获取功能。本来想上okhttp,但还是原生之美吧,简单就是最好的应用。
代码语言:javascript复制String requestUrl = "http://119.29.29.29/d?dn=www.baidu.com";// 新建一个URL对象
URL url = new URL(requestUrl);// 打开一个HttpURLConnection连接
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();// 设置连接主机超时时间
urlConn.setConnectTimeout(5 * 1000);//设置从主机读取数据超时
urlConn.setReadTimeout(5 * 1000);// 设置是否使用缓存 默认是true
urlConn.setUseCaches(true);// 设置为Post请求
urlConn.setRequestMethod("GET");//urlConn设置请求头信息
urlConn.setRequestProperty("Content-Type", "application/json");
//设置客户端与服务连接类型
urlConn.addRequestProperty("Connection", "Keep-Alive");
urlConn.connect(); // 开始连接
// 判断请求是否成功
if (urlConn.getResponseCode() == 200) {
String result = streamToString(urlConn.getInputStream());//获取的内容
WriteLog.writeTxtToFile(AppTimeUtils.formatDate(new Date()) ":" "GetIP url=result=>" result);
String[] ipArr = result.split(";");
if (2 == ipArr.length && !"0".equals(ipArr[0])) {
// 通过HTTPDNS获取IP成功,进行URL替换和HOST头设置
String ip = ipArr[0];
oldip="tcp://" ip ":1883";
}
}
urlConn.disconnect();
简单介绍一下这个代码的功能,就是通过IP地址去解释网址,然后获得网址的真实IP。注意streamToString是通过输入流转为字符串,也是这里的重点,如果没有这个看到的都是乱码。放码。。。
代码语言:javascript复制private static String streamToString(InputStream is) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
baos.close();
is.close();
byte[] byteArray = baos.toByteArray();
return new String(byteArray);
} catch (Exception e) {
Log.e(TAG, e.toString());
return null;
}
}
这样就完成一次安卓下简单的数据采集功能了。。。当然如果更大的应用就用okhttp吧。。比较真的不错,不能再错!