关于 《第一行代码》第九章使用网络技术 中的网络请求变化问题

在9.2.1 使用HttpURLConnection 中其中的 Url=“http://www.baidu.com”中如今百度所以网址协议都改为https

如果还按原代码中的输的话是得不到结果的,如今网络技术变化快,各位同行请注意。还有学会打log

注意布局的横和竖。


package com.example.administrator.httpurlconnection;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

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;

import javax.net.ssl.HttpsURLConnection;

import static java.lang.System.in;

public class MainActivity extends AppCompatActivity implements View.OnClickListener
{
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=(TextView)findViewById(R.id.tv_content);
       Button button=(Button)findViewById(R.id.send_request);
        button.setOnClickListener((View.OnClickListener) this);

    }

    public void onClick(View view) {
        switch (view.getId()){
            case R.id.send_request:
                 sendRequestWithURLConnection();
                break;
            default:
                break;
        }
    }



    //开启线程启用网络操作,记得添加网络权限
    private void sendRequestWithURLConnection(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection httpURLConnection=null;//不可以访问https的地址
                BufferedReader bufferedReader=null;//BufferredReader 包装类,用来包装字符流,将字符流放入缓存里,满了再写入内存 用来提高效率。
                try {
                    URL url = new URL("http://jandan.net/");
                    httpURLConnection= (HttpURLConnection) url.openConnection();//得到 HttpURLConnection实例
                    httpURLConnection.setRequestMethod("GET");//请求方法
                    httpURLConnection.setConnectTimeout(8000);
                    httpURLConnection.setReadTimeout(8000);
                    if(httpURLConnection.getResponseCode()==200){
                        Log.i("Tag","成功");
                    }
                    InputStream in = httpURLConnection.getInputStream();//InputStream类 从流中读取数据 常用方法 int read()读取一个字节 int read(byte b[])
                                                                        //读取多个字节放入数组b中 int available()返回尚未读取的字节数量
                    //下面对得到输出流进行读取

                    bufferedReader = new BufferedReader(new InputStreamReader(in));
                    StringBuilder response= new StringBuilder();//非线程安全
                    String line;
                    while ((line=bufferedReader.readLine())!=null){
                        response.append(line);
                    }
                     showRespoe(response.toString());//.toString 转换成字符串
                    Log.i("tag",response.toString());
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                        if (bufferedReader!=null)
                            try {
                            bufferedReader.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            if (httpURLConnection!=null)
                                httpURLConnection.disconnect();
                }
            }
        }).start();


    }
    private void showRespoe(final String response){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setText(response);
            }
        });
    }

}

猜你喜欢

转载自blog.csdn.net/qq_40802310/article/details/80184226