Android上使用HttpURLConnection发送HTTP请求
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,设置全屏
- 在AndroidManifest.xml声明访问网络的权限 (uses-permissionAndroidStdi;name=”android.permission.INTERNET”)
- 定义一个URL对象对要解析的网站(String)进行解析
URL httpUrl=new URL(url) - 通过URL对象获取连接
HttpURLConnection conn= (HttpURLConnection) httpUrl.openConnection();
设置属性:
//获取时间
conn.setReadTimeout(5000);
//请求方式
conn.setRequestMethod(“GET”); 对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);
}
handler新线程中对StringBuffer进行解析
handler.post(new Runnable() {
@Override
public void run() {
webView.loadDataWithBaseURL(url,sb.toString(),"text/html","utf-8",null);
}
});
- 结果:
参考代码: 第一行代码, 慕课网
还没有评论,来说两句吧...