Android使用HttpURLConnection发送HTTP请求

【Android】使用HttpURLConnection异步发送Http请求并使用Handler线程通信修改UI线程 文章目录一、封装Http请求二、使用线程类的Demo 一般我们发送http请求时都会另外开一个线程使用异步的方法,但是存在子线程不能直接修改ui线程内容的问题,所以就要用到线程间的通信,最近刚刚接触这一方面的东西,于是写了一个功能非常简单发送Http请求的类,使用了Thread、Handler、HttpURLConnection来实现了http请求并将获取到的内容拿到UI线程中。在此记录一下。 一... 阅读详情

在这里,我们就学习下官方建议的HttpURLConnection的用法。

首先要获取到HttpURLConnection的实例

我们只需要new 出一个URL 对象,并传入目标网址,然后再调用openConnection()方法。
URL url=new URL("http://www.baidu.com");
        HttpURLConnection connection=(HttpURLConnection) url.openConnection();

在得到HttpURLConnection的实例后,我们可以设置HTTP请求所使用的方法,常用的方法有两种:GET和POST。GET希望从服务器那里获取数据,POST希望把数据提交给服务器里。

connection.setRequestMethod("GET");

剩下来,我们可以进行一些自由的定制,比如设置链接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头。如:

connection.setConnectTimeout(8000);
        connection.setReadTimeout(8000);

之后再调用getInputStream()方法就可以获取到从服务器返回的输入流,剩下的工作就是对输入流进行读取,最后再调用disconnec()方法将这个HTTP连接关闭掉,如图所示:

InputStream in=connection.getInputStream();
        connection.disconnect();

把所有的部分都介绍完毕之后,我们就用一个实例来体验下HttpURLConnection的用法。
XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/BT"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Send Request"/>
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/response_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </ScrollView>
</LinearLayout>

活动部分:

Button sendRequest=(Button)findViewById(R.id.BT);
        responseText=(TextView) findViewById(R.id.response_text);
        sendRequest.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                    HttpURLConnection connection=null;
                        BufferedReader reader=null;
                     try{
                     URL url=new URL("http://www.sina.com");
                            connection=(HttpURLConnection) url.openConnection();
                            connection.setRequestMethod("GET");
                            connection.setReadTimeout(8000);
                            connection.setReadTimeout(8000);

                            InputStream in=connection.getInputStream();

                            reader=new BufferedReader(new InputStreamReader(in));
                            StringBuilder response=new StringBuilder();
                            String line;
                            while ((line=reader.readLine())!=null){
                                response.append(line);

                            }
                            showResponse(responseData);
                        }catch (Exception e){
                            e.printStackTrace();

                        }finally {

                            if (reader!=null){
                                try {
                                    reader.close();
                                }catch (IOException e){
                                    e.printStackTrace();
                                }

                            }
                            if(connection!=null){
                                connection.disconnect();
                            }
                        }


                    }
                }).start();

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

            }
        });

这样我们就把HttpURLConnection发送HTTP请求的内容就写完了,不过看了OkHttp的用法之后,我们可能就不会再用HttpURLConnection了。下一篇博客我就写下OkHttp到底是怎么用的。
目前的自己还是小白一个,把郭霖老师讲的自己理解着敲一遍,如果有一起想学习安卓的同学,我们可以一起学习。

ESP32IDF 通过 PCA9685控制舵机的程序bug处理 esp32 PCA9685 bug 舵机 阅读详情

相关推荐

鸿蒙进阶——HDI及IDL硬件接口IPC框架小结

HDI(Hardware Device Interface):OpenHarmony硬件设备接口,定义系统中跨进程通信的接口,实现服务间的跨进程通信

最美不过,心中有梦,身旁有你! 3902

Android中HttpURLConnection使用详解

认识Http协议Android中发送http网络请求是很常见的,要有GET请求和POST请求。一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端,如下图所示: 客户端->服务器 客户端向服务器发送请求主要包含以下信息:请求的Url地址、请求头以及可选的请求体,打开百度首页,客户端向服务器发送的信息如下所示:请求URL(Request URL) 上图中的R

孙群 7万+

Rocky Linux 9.2:利用LVM动态调整/home与/根分区空间分配

本文详细介绍了在Rocky Linux 9.2系统中,如何利用LVM(逻辑卷管理器)动态调整/home与根分区(/)的空间分配。针对根分区空间不足而/home分区闲置的常见问题,文章提供了从检查磁盘布局、备份数据、卸载分区、调整逻辑卷大小到重建文件系统的完整操作步骤,并重点说明了XFS与EXT4文件系统在缩容时的不同处理方法,帮助系统管理员安全、在线地实现存储空间的灵活调配。

weixin_29271263的博客 177

Android 之 HTTP请求方式:HttpURLConnection

答:一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使 用和扩展它。继承至URLConnection,抽象类,无法直接实例化对象。通过调用() 方法获得对象实例,默认是带gzip压缩的;

leyang0910的博客 1766

Matlab信号处理——基于BP神经网络的调制信号分类与识别

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!对信号进行采样和处理,得到了一系列特征参数,包括幅度均值、频率峰值、频率平方均值以及相位标准差、修正后的相位标准差。

小嘤熊的博客 1308

【QEMU系统分析之TPM篇(一)】

本文以 QEMU 8.2.2 为例,分析其 TPM-emulator 模块的实现,并为 QEMU 添加 Windows 平台的TPM 模拟器的支持。

David唐辉的博客 1190

Android使用HttpURLConnection访问网络

Android使用HttpURLConnection访问网络 一、管理网络状态 使用网络进行数据通信前,需要先获取网络状态。 使用ConnectivityManager获取网络状态步骤: 1.获取ConnectivityManager对象 2.获取当前活动的网络NetworkInfo对象 3.判断当前网络状态是否为连接状态 4.在AndroidMainfest.xml中添加访问当前网络状态权限 //使用ConnectivityManager检查网络状态步骤 private boolean check

m0_66309026的博客 8400

DFT实战:如何用Synopsys工具搞定多时钟域Scan Chain设计(附避坑指南)

本文详细解析了使用Synopsys DFT Compiler工具链实现多时钟域Scan Chain设计的全流程,包括时钟混合策略、跨时钟域平衡技巧和实战脚本剖析。通过量产验证的工程实践方案,帮助DFT工程师有效解决复杂SoC设计中的Scan Chain挑战,提升测试效率和质量。

mm9012的博客 1033

Android学习——HttpURLConnection

HttpURLConnection 1.概述 如今,移动端APP渗透到各行各业,数量难以计数,几乎所有应用都会使用到网络,掌握Android网络编程是APP开发是核心技术,必备技术。这是因为移动设备的计算能力存储能力都是有限的。因此移动设备依赖网络计算、存储就成为了主要的方式,重要程度就不言而喻了。 Android完全支持JDK本身的TCP、UDP网络通信的API,也就是我们在JAVASE阶段讲解...

UUUUUltraman的博客 2466

VM与欧姆龙PLC通讯设置:Fins TCP/UDP协议实战避坑指南

本文详细解析了VM视觉平台与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战配置与避坑要点。文章对比了Fins TCP与Fins UDP的差异,推荐在多数工业控制场景下优先选用Fins TCP以保证可靠性,并深入讲解了网络设置、寄存器地址映射、轮询优化等核心配置步骤。同时,针对常见的多次触发拍照、数据解析错误等问题提供了具体的解决方案和调试技巧,旨在帮助工程师快速建立稳定高效的通讯连接。

e4f5g6h7的博客 594

手把手教你使用 YOLOv11/v8 算法 + PaddleOCR 算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等

手把手教你使用 YOLOv11/v8算法 + PaddleOCR算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等。车牌识别系统支持 蓝牌、绿牌、黄牌、双层车牌等车牌识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2781

[Android基础]Android中使用HttpURLConnection

HttpURLConnection继承了URLConnection,因此也能够向指定站点发送GET请求、POST请求。它在URLConnetion的基础上提供了例如以下便捷的方法。 int getResponseCode():获取server的响应代码。 String getResponseMessage():获取server的訪问信息。 String getReques...

weixin_33724570的博客 393

[最新]MapReduce综合应用案例 — 气象数据清洗

【代码】[最新]MapReduce综合应用案例 — 气象数据清洗。

M_inherit的博客 1014

Android 使用HttpURLConnection发送HTTP请求

在过去,Android上发送HTTP请求一般有两种方式,HttpURLConnection和HttpClient,不过由于HttpClient存在API数量过多,扩展困难等缺点,Android团队越来越不建议我们使用这种方式,终于在Android6.0系统中,HttpClient的功能被完全移除了,标志着比功能被正式弃用,现在官方建议使用的是HttpURLConnection的用法。 首先需要获取到

li1214477012的博客 377

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android上使用HttpURLConnection发送HTTP请求

Android上使用HttpURLConnection发送HTTP请求 WebView 的引入 WebView是一个Android早有的控件,它能在应用程序里嵌入一个浏览器,实现网页展示. WebView已经在后台帮我们处理好发送HTTP请求,接受服务器响应,解析返回数据

Pixel_pig 574

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java模拟安卓get请求,Java发送http请求(httpUrlConnection)安卓客户端也可以使用

一、文章前言一念之间的坚持换来更好的自己u=84224111,892651579&fm=27&gp=0.jpg二、内容:有时候我们需要用java代码模仿浏览器给某个服务器发送http请求(本文将以get和post请求来展示)。1、首先我们先来看看get请求(文章所请求得服务器就以百度搜索为例):1.我们打开百度主页按下F12或者右键查看网页源码NetWork2.可以简单的发现请求u...

weixin_29349579的博客 1042

Android中使用HttpURLConnection和HttpClient发送Http请求

在android应用程序中,可以使用HttpURLConnection发送HTTP请求。详见如下实例 1

残缺的孤独 2815

android发送http请求—-URLConnection、HttpURLConnection的使用

1. 使用 标准Java接口: 设计的类: java.net.* 基本步骤:1) 创建 URL 以及 URLConnection / HttpURLConnection 对象2) 设置连接参数3) 连接到服务器4) 向服务器写数据5)从服务器读取数据 例: try{//创建一个 URL 对象URL url =newURL(your_url);//创建一个 UR...

dazu7840的博客 126

Java发送http请求(httpUrlConnection)安卓客户端也可以使用

一、文章前言 一念之间的坚持换来更好的自己 u=84224111,892651579&fm=27&gp=0.jpg 二、内容: 有时候我们需要用java代码模仿浏览器给某个服务器发送http请求(本文将以get和post请求来展示)。 1、首先我们先来看看get请求(文章所请求得服务器就以百度搜索为例): 1.我们打开百度主页按下F12或者右键查看网页源码NetWork 2.可以简单的发现请求

qq_35954591的博客 587

android客户端怎么打开链接服务器,Android客户端链接服务器端,向服务器端发送请求HttpURLConnection...

在Java中想后台服务器发送请求通常都直接使用了Java的网络编程,或者使用HttpClient向后台服务器端发送HTTP请求。虽然在安卓中,全部Java的API均可以使用,而却使用其并不会出现什么问题,可是HttpClient毕竟是基于Java标准实现的一个类,在安卓中,想要链接后台服务器端,专门基于android实现了一个类,为HttpURLConnection。经过HttpURLConnec...

weixin_29029145的博客 346

Http学习之使用HttpURLConnection发送post和get请求 android

  最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。下面的代码简单描述了如...

zjutsoft 209

Android上发送Http 的方式

在过去,Android 上发送 HTTP 请求一般有两种方式:HttpURLConnection 和 HttpClient,不过在 Android 6.0 系统中,HttpClient 被完全移除了,因此推荐使用 HttpURLConnection。

qq_43867812的博客 5252

使用HttpURLConnection进行网络访问

阅读:https://blog.youkuaiyun.com/wei_zhi/article/details/52997246 https://blog.youkuaiyun.com/rocoloco/article/details/78057384 一、概述 在Android 上发送HTTP 请求的方式一般有两种:HttpURLConnection 和HttpClient。因为在Android 5.0之后,HttpCl...

qq_32534441的博客 3152
上一篇: 百度SDK之方向传感器的应用
下一篇: OkHttp的简单用法
OneLinee
博客等级 码龄10年 11粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值