android --http网络协议 以及webview的基本使用 inputStream转成String 利用handle更新ui

1 使用httpURLConnection 的实例

URL URL= new URL("http://www.baidu.com");

HttpURLConnection conn =(HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET")

conn.setRequestMethod("POST")

conn.setConnectTimeout(8000)

conn.setReadTimeout(6000)

调用 getInputStream()方法获取服务器服务的输入流

InputStream in = conn.getInputStream()

扫描二维码关注公众号,回复: 6119895 查看本文章

关闭http连接

conn.close()

webview的基本使用

mainfest.xml 允许使用网络

 <uses-permission android:name="android.permission.INTERNET"/>
  //获取webView控件的实例
       webView = findViewById(R.id.webview);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });

        webView.loadUrl("http:www.baidu.com");

最基本的网络请求

package com.yifei.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建子线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                requestData();
            }
        }).start();

    }

    private void requestData() {
        try {
            URL url = new URL("https://www.ietf.org/rfc/rfc2616.txt");
            //获取到httpUrlConnection的实例
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            //指定请求方式
            urlConnection.setRequestMethod("GET");
            urlConnection.setConnectTimeout(10000);
            urlConnection.setReadTimeout(10000);
            InputStream in = urlConnection.getInputStream();
            String result = streamToString(in);
            Log.d("MainActivity12", "onCreate: "+result);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public 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("MainActivity12", e.toString());
            return null;
        }
    }
}

利用handle更新ui

package com.yifei.myapplication;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class MainActivity extends AppCompatActivity {
    private TextView textView;
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case 1001:
                    String data= (String) msg.obj;
                    textView.setText(data);
                    break;
                    default:
                        return;
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView= findViewById(R.id.text);
        //创建子线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                requestData();
            }
        }).start();



    }

    private void requestData() {
        try {
            URL url = new URL("https://www.ietf.org/rfc/rfc2616.txt");
            //获取到httpUrlConnection的实例
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            //指定请求方式
            urlConnection.setRequestMethod("GET");
            urlConnection.setConnectTimeout(10000);
            urlConnection.setReadTimeout(10000);
            InputStream in = urlConnection.getInputStream();
            String result = streamToString(in);
            Log.d("MainActivity12", "onCreate: "+result);
            Message message = new Message();
            message.what=1001;
            message.obj= result;
            handler.sendMessage(message);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public 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("MainActivity12", e.toString());
            return null;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41069726/article/details/89812573
今日推荐