文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android HttpsUrlConnection基本使用

2022-06-06 13:49

关注

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

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 {
        //网络请求多为耗时操作,在这用异步类进行操作,完成后自动销毁防止内存溢出
        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);
        }
    }
}

作者:kaida.yu


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯