Android HttpsUrlConnection基本使用

工作后一直用各种网络框架,都快把基础知识忘了,抽点时间复习一下基础类的用法。

HttpsUrlConnection  android网络请求类 当然还有HttpUrlConnection对应http请求,下面以百度首页为例进行请求

写一个GET请求工具类

public class NetUtlis {

    public static String SendUrlRequest(String s){
        try {
            URL url = new URL(s);//将传入的String对象解析为url(统一资源定位符)
            HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
            //通过url的openConnection()方法打开一个网络连接对象并强转为HttpsUrlConnection对象
            //然后将httpsUrlConnection指向它

            httpsURLConnection.setReadTimeout(5000);
            //设置连接超时时间5000即5000毫秒=5秒钟

            httpsURLConnection.setRequestMethod("GET");
            //设置请求方法 GET

            InputStream inputStream=httpsURLConnection.getInputStream();
            //获得httpsUrlConnection的输入流对象

            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            //将输入流对象包装为字符缓冲输入流

            StringBuffer stringBuffer = new StringBuffer();
            //创建一个StringBuffer对象用于接收每次获取到的输入流信息,当然这里是间接通过下面的String对象来拼接
            
            String singleLineData = null;

            while ((singleLineData = bufferedReader.readLine())!=null) {
                //字符串singleLineData即每次从输入流中获取到的数据,当某一次获取为空时证明读取完毕,跳出循环
                stringBuffer.append(singleLineData);
                //不为空时,不断拼接stringBuffer
            }

            return stringBuffer.toString();
            //最后将调用toString()方法返回完整数据字符串

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }

}

在Activity中仅放置一个button用于开始请求

public class MainActivity extends AppCompatActivity {

    private SendUrlTask sendUrlTask;
    private Button button;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendUrlTask= new SendUrlTask("https://www.baidu.com");
                sendUrlTask.execute();
            }
        });

    }


    private class SendUrlTask extends AsyncTask<Void,Void,String> {
        //网络请求多为耗时操作,在这用异步类进行操作,完成后自动销毁防止内存溢出
        String url;
        public SendUrlTask(String url) {
            super();
            this.url = url;
        }

        @Override
        protected String doInBackground(Void... voids) {
            return NetUrlis.SendUrlRequest(url);
            //调用工具类发起网络请求
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
            sendUrlTask.cancel(true);
            //执行完成后toast结果,并销毁
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (sendUrlTask != null) {
            sendUrlTask.cancel(true);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值