Android中的Http通信

HttpUrlConnection

一.访问网页

  1.在activity_main.xml中定义布局WebView(要添加权限)

 

<WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

 2.在MainActivity中开启线程HttpThread访问网络

  

new HttpThread("http://www.baidu.com",webView,handler).start();

  HttpThread.java

   

public class HttpThread extends  Thread{
    private String url;
    private WebView webView;

    private Handler handler;

    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);
             HttpURLConnection conn = (HttpURLConnection)httpUrl.openConnection();
             conn.setReadTimeout(5000);      //设置访问超时
             conn.setRequestMethod("GET");   //访问方式
//         1.访问http网址
             final StringBuffer sb = new StringBuffer();
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String str;
            while ((str = br.readLine()) != null){
                sb.append(str);
            }
            handler.post(new Runnable() {
                @Override
                public void run() {
                    webView.loadDataWithBaseURL(url, sb.toString(), "text/html", "uft-8", null);
                }
            });
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

二.访问图片(要添加权限)

   1.在activity_main.xml布局

  

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"/>

   2.在MainActivity开启线程HttpThread下载并访问图片

  

public class HttpThread extends  Thread{
    private String url;
    private ImageView imageView;
    private Handler handler;

    public 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);
                HttpURLConnection conn = (HttpURLConnection)httpUrl.openConnection();
                conn.setReadTimeout(5000);      //设置访问超时
                conn.setRequestMethod("GET");   //访问方式
//            2.访问网络图片,下载可省略
                conn.setDoInput(true);
                InputStream in = conn.getInputStream();
                FileOutputStream fos = null;
                String filename = String.valueOf(System.currentTimeMillis());
                File downloadFile = null;
                if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                    File parent = Environment.getExternalStorageDirectory();
                    downloadFile = new File(parent,filename);
                    fos = new FileOutputStream(downloadFile);
                }
                byte[] datas = new byte[2*1024];
                int len;
                if(fos != null) {
                    while ((len = in.read(datas)) != -1) {
                        fos.write(datas, 0, len);
                    }
                }
                final Bitmap bitmap = BitmapFactory.decodeStream(in);

 handler.post(new Runnable() {
                @Override
                public void run() {
                      imageView.setImageBitmap(bitmap);
                }
            });
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

 

猜你喜欢

转载自270827204.iteye.com/blog/2297314