一:通过Http 下载百度源码加载到 WebView显示
1:需要访问网络必须先要获取网络权限:
<span style="font-family: Arial, Helvetica, sans-serif;"> <uses-permission android:name="android.permission.INTERNET" ></span>
</uses-permission>
2:在xml文件 定义Webview。
3:因为网络数据加载延迟问题,所以必须要用线程类来显示网页:
package testHttp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.http.HttpConnection;
import android.R.string;
import android.os.Handler;
import android.webkit.WebView;
public class HttpThread extends Thread{
private String url;
private WebView webView;
private Handler handler;
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 httpConnection=(HttpURLConnection) httpUrl.openConnection();//建立http连接
httpConnection.setReadTimeout(5000);//设置超时时间
httpConnection.setRequestMethod("GET");//设置请求为GET方法
final StringBuffer bufferString=new StringBuffer();//用Stringbuffer来存储读到的代码
BufferedReader reader=new BufferedReader(new InputStreamReader(
httpConnection.getInputStream()));
String str;
while((str=reader.readLine())!=null)
{
bufferString.append(str);
}
handler.post(new Runnable() {
@Override
public void run() {
webView.loadData(bufferString.toString(),
"text/html;charset=utf-8", null);//将webView显示到网页上,还是要想 Web一样设置其编码
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4:在MainActivity中建立线程,并传参数到Thread:
package testHttp;
import com.example.androidtest.R;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;
public class TestHttpActivity extends Activity{
private WebView webView;
private String urlString="http://www.baidu.com";
Handler handler=new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.http_main_activity);
webView=(WebView) findViewById(R.id.httpWebView);
new HttpThread(urlString, webView, handler).start();
}
}
二:使用http协议在app中加载图片:
1:手写也是网络权限;
2:在xml文件 定义ImageView。
3:使用http获取网络图片,但是不同的是现在要通过二进制流来获取图片了。
先用二进制流获取到图片到本地之后,再用本地地址打开图片到ImageView:
package testHttp;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.http.HttpConnection;
import android.R.string;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.os.Handler;
import android.webkit.WebView;
import android.widget.ImageView;
public class HttpThread extends Thread{
private String url;
private ImageView imageView;
private Handler handler;
HttpThread(String url,ImageView imageView,Handler handler){
this.url=url;
this.imageView=imageView;
this.handler=handler;
}
@Override
public void run() {
try {
URL httpUrl=new URL(url);
try {
HttpURLConnection httpConnection=(HttpURLConnection) httpUrl.openConnection();
httpConnection.setReadTimeout(5000);
httpConnection.setRequestMethod("GET");
httpConnection.setDoInput(true); //允许写
InputStream inputStream=httpConnection.getInputStream();
FileOutputStream fileOutputStream=null;
File downFile=null;
String fileNameString=String.valueOf(System.currentTimeMillis());
if(Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)){
File parentFile=Environment.getExternalStorageDirectory();//获取本地路径
downFile=new File(parentFile, fileNameString);
fileOutputStream = new FileOutputStream(downFile);
}
byte[] bt=new byte[2*1024];
int len;
if(fileOutputStream!=null){
while((len=inputStream.read(bt))!=-1)
{
fileOutputStream.write(bt, 0, len);
}
}
final Bitmap bitmap=BitmapFactory.decodeFile(downFile.getAbsolutePath());
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
imageView.setImageBitmap(bitmap);
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}