卜若的代码笔记-android系列-android网络系列-第一章:使用http访问网页,并通过异步方式将数据显示在UI线程

1.封装http的访问接口

 public StringBuilder urlEvent() throws IOException {

        url = new URL("https://www.baidu.com/");
        conn = (HttpURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setConnectTimeout(2000);
        conn.setReadTimeout(2000);
        InputStream ins = conn.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
        StringBuilder response = new StringBuilder();
        String line;
        while ((line = reader.readLine())!= null)
        {

            response.append(line);

        }
        return  response;

    }

2.使用线程调用该接口,并通过Handler的方式异步传递数据到线程

public void httpThread()
    {
        new Thread(new Runnable() {
            @Override
            public void run() {

                try {
                  StringBuilder builder =  urlEvent();

                  Message msg = new Message();
                  msg.what = 1;
                  Bundle data = new Bundle();
                  data.putString("data", builder.toString());
                  msg.setData(data);
                  handler.sendMessage(msg);
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }).start();


    }

3.创建handler对象对异步数据进行操作

 private Handler handler = new Handler()
    {


        public  void handleMessage(Message msg)
        {
            switch (msg.what)
            {
                case 1:
                    Bundle data = msg.getData();
                    console.setText(data.getString("data"));

                   // console.setText("接受到消息");
                    break;
                    default:
                        break;
            }


        }

    };

4.完整代码://仅仅只限于参考,没有配上laout的代码,然后,最后你需要添加权限

<uses-permission android:name="android.permission.INTERNET"/>
package com.system.ad;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends ADActivityBase {

    public EditText userAccInput;
    public EditText userPwdInput;
    public TextView console;
    public Button loginBtn;
    public Button registerBtn;
    public  String a = null;

    URL url = null;

    HttpURLConnection conn =null;
    public void httpThread()
    {
        new Thread(new Runnable() {
            @Override
            public void run() {

                try {
                  StringBuilder builder =  urlEvent();

                  Message msg = new Message();
                  msg.what = 1;
                  Bundle data = new Bundle();
                  data.putString("data", builder.toString());
                  msg.setData(data);
                  handler.sendMessage(msg);
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }).start();


    }

    private Handler handler = new Handler()
    {


        public  void handleMessage(Message msg)
        {
            switch (msg.what)
            {
                case 1:
                    Bundle data = msg.getData();
                    console.setText(data.getString("data"));

                   // console.setText("接受到消息");
                    break;
                    default:
                        break;
            }


        }

    };


    public StringBuilder urlEvent() throws IOException {



        url = new URL("https://www.baidu.com/");
        conn = (HttpURLConnection)url.openConnection();
        conn.setRequestMethod("GET");
        conn.setConnectTimeout(8000);
        conn.setReadTimeout(8000);
        InputStream ins = conn.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
        StringBuilder response = new StringBuilder();
        String line;
        while ((line = reader.readLine())!= null)
        {

            response.append(line);

        }
        return  response;

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        userAccInput = findViewById(R.id.userAccInput);
        userPwdInput = findViewById(R.id.userPwdInput);
        loginBtn = (Button)findViewById(R.id.loginBtn);
        registerBtn  = findViewById(R.id.registerBtn);
        console = findViewById(R.id.console);




        Toast.makeText(MainActivity.this,"123",Toast.LENGTH_SHORT);



        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                httpThread();
                console.setText("ffffffffffff");
              log(userAccInput.getText().toString());


            }
        });


    }



}

                                         

猜你喜欢

转载自blog.csdn.net/qq_37080133/article/details/84721515