Androud中的Http通信之WebView

来源:互联网 发布:mac mini怎么接显示器 编辑:程序博客网 时间:2024/06/05 10:57

AndroidMenifest.xml添加权限

<uses-permission android:name="android.permission.INTERNET"/>

布局添加WebView

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.lune.http_01.MainActivity">    <WebView        android:id="@+id/webView"        android:layout_width="match_parent"        android:layout_height="match_parent">    </WebView></LinearLayout>


import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.webkit.WebView;import com.lune.thread.HttpThread;public class MainActivity extends Activity {    private WebView webView;    private Handler handler = new Handler();    //通过http访问百度网址信息    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        webView = (WebView)findViewById(R.id.webView);        new HttpThread("http://www.baidu.com",webView,handler).start();    }}

其中的HttpThread为自己定义的一个线程

import android.os.Handler;import android.webkit.WebView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class HttpThread extends Thread{    //网络的访问是一个耗时的操作,因此在线程中进行    private String url;    private WebView webView;    Handler handler;    //子线程中更新url    public HttpThread(String url,WebView webView,Handler handler){        this.url = url;        this.webView = webView;        this.handler = handler;    }    @Override    public void run() {        try {            URL httpUrl = new URL(url);       //统一资源定位符对象            try {                HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();                //通过conn设置连接参数                conn.setReadTimeout(5000);  //设置读取超时时间                conn.setRequestMethod("GET"); //设置请求方式                final StringBuffer sb = new StringBuffer();                String str;                //网页回传的页面信息通过reader读取                BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));                while((str=reader.readLine())!=null){                    sb.append(str);                }                handler.post(new Runnable() {                    @Override                    public void run() {                        webView.loadData(sb.toString(),"text/html;charset=utf-8",null);                    }                });                           } catch (IOException e) {                e.printStackTrace();            }        } catch (MalformedURLException e) {            e.printStackTrace();        }    }}



0 0