android学习笔记 之 HttpUrlconnection的使用

日常开发——Android网络请求openConnection()源码分析 问题         最近项目需要一个下载的功能,所以在安卓端实现了一个普遍的下载功能模块。但Protal admin端发来信息说,怎么安卓端cal了l两次下载接口,当时以为是代码写错了,改了几次之后发现问题还在。经过网上搜索以及源码分析之后,才知道这是安卓或者说Java封装API的原因。 安卓端,使用Thread实现一个http get请求普遍方法: @Override publi 阅读详情



在Android上发送HTTP请求的常用的有两种方式,HttpURLConnection和HttpClient,本次学习HttpURLConnection的使用

 1. new 一个URL对象,并传入网络地址,然后调用openConnection()方法,如下

                 URL url = new URL("http://www.baidu.com");
		connection=(HttpURLConnection) url.openConnection();

2.得到HttpURLConnection的实例后,可以设置HTTP请求的方法。常用的有GET和POST,GET表示希望从服务器那里获取数据,而POST则表示希望提交数据给服务器。

	       connection.setRequestMethod("GET");
3.除此之外还可以进行一些其它设置,比如设置连接超时、读取超时的毫秒数,以及服务器希望得到的一些消息头等。如下所示:

               connection.setConnectTimeout(8000);
	       connection.setReadTimeout(8000);
4.然后调用getInputStream()方法获取服务器返回的输入流,并对输入流进行读取。

               InputStream in = connection.getInputStream();
	        //下面对获取的输入流进行读取
	      BufferedReader reader = new BufferedReader(new InputStreamReader(in));
5.最后关闭HTTP链接

	   connection.disconnect();
示例代码下载地址

6.例子

/**
 * Created by  /6/8.
 * 网络请求接口
 */
public interface HttpCallbackListener {
    void onFinish(String respone);
    void onErroe(Exception e);
}
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;

/**
 * Created by  on 2017/6/8.
 * 网络工具
 */

public class HttpUtil {
    public static String sendHttpRequest(String address){
        HttpURLConnection connection=null;
        try {
            URL url = new URL(address);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(8000);
            connection.setReadTimeout(8000);
            connection.setDoInput(true);
            connection.setDoOutput(true);
            InputStream in = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder respone = new StringBuilder();
            String  line ;
            while((line=reader.readLine())!=null){
                respone.append(line);
            }
            return respone.toString();
        } catch (java.io.IOException e) {
            e.printStackTrace();
            return e.getMessage();
        }finally {
            if(connection!=null){
                connection.disconnect();
            }
        }

    }


    public static void sendHttpRequest(final String address,
                                       final HttpCallbackListener listener){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection httpURLConnection =null;


                try {
                    URL url = new URL(address);
                    httpURLConnection= (HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.setConnectTimeout(8000);
                    httpURLConnection.setReadTimeout(8000);
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setDoInput(true);
                    InputStream inputStream = httpURLConnection.getInputStream();
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line=bufferedReader.readLine())!=null){
                        response.append(line);

                    }
                    if (listener !=null){

//                     回调onfinish
                        listener.onFinish(response.toString());
                    }

                } catch (Exception e) {

                    e.printStackTrace();
                    if(listener !=null){
//                        回调 error 方法
                    }
                }finally {
                    if(httpURLConnection !=null){
                        httpURLConnection.disconnect();
                    }
                }


            }
        }).start();
    }
}


使用


        String address="http://www.baidu.com";
//        String response = HttpUtil.sendHttpRequest(address);

        HttpUtil.sendHttpRequest(address, new HttpCallbackListener() {
            @Override
            public void onFinish(final String respone) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplication(),respone,Toast.LENGTH_LONG).show();
                    }
                });
            }

            @Override
            public void onErroe(Exception e) {

            }
        });




Android学习笔记:HttpClient和HttpURLConnection 在Android开发中网络请求是最常用的操作之一,Android SDK中对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口: (1)标准Java接口(java.NET)——HttpURLConnection,可以实现简单的基于URL请求、响应功能; (2)Apache接口(org.apache.http)——HttpClient,使用起来更方便更强大; 一、HttpClient H... 阅读详情

相关推荐

低速信号设计之 LPC 篇

摘要:LPC总线作为服务器低速信号设计的关键技术,在BIOS芯片连接、Super I/O芯片控制和嵌入式管理等方面发挥着重要作用。其采用33MHz时钟频率和4位并行传输机制,理论速率达16.5MB/s。设计时需重点关注布线长度(建议<10cm)、信号完整性(45°走线、合理层间隔离)和过孔优化等要点。典型应用案例表明,通过规范设计可确保在工业控制等复杂环境中稳定工作。LPC总线凭借低成本、低引脚数和良好兼容性,仍是服务器低速外设连接的重要解决方案。

qq_16237389的博客 1164

Android开发网络编程,Android开发使用URLConnection进行网络编程详解

本文实例讲述了Android开发使用URLConnection进行网络编程。分享给大家供大家参考,具体如下:URL的openConnection()方法将返回一个URLConnection,该对象表示应用程序和URL之间的通信连接,程序可以通过URLConnection实例向该URL发送请求,读取URL引用的资源。通常创建一个和URL的连接,并发送请求,读取此URL引用的资源。需要如下步骤:a)通...

weixin_28788983的博客 420

张正友标定法_单目-线激光三维扫描系统中光刀平面的标定

单目-线激光三维扫描系统中光刀平面的标定线结构光有结构简单、精度高、测速快等特点,被广泛应用于三维重建领域。线结构光三维扫描系统由一个相机和一个线结构光投射器构成,线结构光投射器将线结构光投射到被测物体表面,相机采集带有线激光的被测物体图像,根据相机和线激光投射器间的相对位置关系,使用激光三角法计算出激光线上的点在相机坐标系下的坐标。激光三角法原理如下图所示,线激光投射的扇形区域可以看作是一个平面...

weixin_39616379的博客 1074

android-urlconnection.connect()和url.openconnection()的区别

来自 http://zhidao.baidu.com/link?url=ijxS1UwUICoIO38S9ioEiK8g4xZ5omoZBCGQKMnv7g4Njaa7_NfPe86D90opTizcI6Dv1Wja7mPa1gaQR7cqpa urlconnection.connect()方法是抽象的; 打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)。 如果在已打开连

ofreelander的专栏 1359

CIC-IDS-2018数据集高效预处理实战:从数据清洗到特征整合

本文详细介绍了CIC-IDS-2018数据集的高效预处理方法,从数据清洗到特征整合的全流程实战。通过内存优化、异常值处理和特征工程等技巧,帮助网络安全研究人员快速处理大规模网络流量数据,提升机器学习模型的训练效率和准确率。特别针对特征数据的预处理提供了实用代码示例和优化建议。

weixin_29274969的博客 502

天池长期赛:二手车价格预测(422方案分享)

本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。

weixin_46685991的博客 1万+

Android使用HttpURLConnection访问网络

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

m0_66309026的博客 8400

爬取国家统计局最近10年年度数据

一、编码流程 1.目标网址:https://data.stats.gov.cn/easyquery.htm?cn=C01 2.编码思路: (1) 解析左侧指标树,实现4级标签定位 (难点:层层嵌套,下一级指标的xpath路径以上一级指标为基础;不是所有二级指标都含有三和四级指标,需要进行判断) (2) 使用selenium webdriver 点选指标,加载出右侧表格数据 (难点:当指标无法在全局页面显示时,需向下拖动滚动条) (3) 解析右侧数据,实现数据存储 3.使用模块: (1) selenium:解

weixin_39645690的博客 4558

Android网络编程(八) 之 HttpURLConnection原理分析

1 使用回顾 我们在前面博文《Android网络编程(四) 之 HttpClient与HttpURLConnection》中已经对HttpURLConnection的使用进行过介绍。今天我们接着往下来阅读HttpURLConnection的关键源码从而它进行更加深入的理解。开始前,先来回顾一下简单的使用,通过使用步骤来深入分析每行代码背后的原理,代码如: InputStream inStre...

子云心的博客 1584

嵌入式工程师成长之路(0)----认识元件

在电子设计与维修中,认识元件是成功的关键!面对琳琅满目的电阻、电容、电感与二极管,样子形式千奇百怪,你是否也曾陷入困难? 本文基于行业权威分类标准,结合十年工程师实战经验,深度解析4大类、30+子类电子元件的核心特性、应用场景与避坑指南,助你从“小白”秒变“电子高手”!

云轩阁 11万+

【AI黑话日日新】什么是AI云原生?

云原生赋能AI:利用容器、微服务、Serverless、DevOps等云原生技术,解决AI应用(尤其是大模型)在部署、扩展、运维、成本控制方面的痛点,让AI服务具备高可用、高性能、易运维、易扩展的特性AI赋能云原生:将AI技术(如智能调度、异常检测、自动优化)融入云基础设施管理,使云平台具备自我感知、自我优化、自我修复的能力,从"被动响应"升级为"主动适配"其本质是实现从""(AI运行在云上)到""(为AI量身打造的云)的根本性转变。

专注:太空算力、AI infra、异构调度、大模型成本工程 627

【学习笔记-Android】(十三) 网络篇(一)——HttpURLConnection

网络篇笔记链接: 一、HttpURLConnection 二、Volley框架 + 使用Gson解析json数据 三、OkHttp3框架 + 使用Gson解析json数据 四、WebView组件 五、Android 9.0以上不能访问网络问题解决方法 =============================================================== 使用HttpURLConnection 本文目录: 1、GET请求 2、POST请求 提示:Android 9.0 版本之后的网络访

AlanLee97的博客 273

GeoXCP:可解释人工智能中空间解释的不确定性量化

GeoXCP: uncertainty quantification of spatial explanations in explainable AI提出基于保形预测(conformal prediction)的不确定性量化框架——地理空间解释保形预测(GeoXCP),将空间依赖纳入建模过程,生成具有校准不确定性估计的空间自适应解释。通过大量模拟实验和真实世界数据集验证,GeoXCP在不同地理空间场景中能提供可靠解释并有效量化不确定性,推动可解释地理空间机器学习的发展,帮助决策者评估模型驱动洞察的可信度。

May the Force be with you 243

android 学习笔记 HttpURLConnection

HttpURLConnection 的使用 首先需要获取到HttpURLConnection的实例,一般只需new出一个URL对象,并传入目标的网络地址,然后调用一下openConnection()方法即可,如下所示:  URL url = new URL("http://www.baidu.com"); HttpURLConnection connection = (HttpURL

ugly_monster的专栏 433

STM32F407中文手册

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

jre9下载 jdk9

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

Android学习笔记9--HttpURLConnection使用

HttpURLConnection的使用 这个是用来连接网络发送或者接收数据的时候使用的API 1.首先定义一个URL对象接收路径 2.获得HttpURLConnection的实例 3.设置发送GET请求 4.设置返回超时的方法 5.获取返回值 String path = et_path.getTe

analysefang的博客 382

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

HttpUrlConnection 基础使用

From https://developer.android.com/reference/java/net/HttpURLConnection.html HttpUrlConnection: A URLConnection with support for HTTP-specific features. See the spec for details. Uses of this class fo...

那些年的代码 629

【Java基础】- HttpURLConnection详解

HttpURLConnection对象不能直接构造,需使用URL类中的openConnection()方法来创建实例。

记录总结工作过往 1万+

Android 网络编程(3)——使用URLConnection提交请求

URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间的通信连接。程序可以通过URLConnection实例向该URL发送请求,读取URL引用的资源 通常创建一个和URL的连接,并发送请求、读取此URL引用的资源需要如下几个步骤: 通过调用URL对象openConnection()方法来创建URLConnection对象设置

努力创作有价值的文章 7229

android学习---使用HttpURLConnection

HTTP工作原理:客户端向服务器发出一条HTTP请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。

liukeke的博客 2503

【发起http请求阻塞问题】

背景 给指定地址发送http请求,如果该地址是无法访问的,那么http会在一段时间内都在请求该地址,造成程序的堵塞 解决 给http请求设置响应时间,如果在该响应时间段内还没请求成功就结束请求 url = "www.xxxx.com" URL uri = new URL(url); URLConnection request = uri.openConnection(); request.setConnectTimeout(2000); request.s.

piano_diano的博客 3150

【Android开发那点破事】解决Andriod使用HttpURLConnection 失败问题

在Android的Activity中使用HttpURLConnection连接到服务端时抛出异常,Access denied。第一个想到是权限问题。然后就尝试将INTERNET权限加上:在Manifest中加上: 还是抛异常!看异常信息,和StrictMode有关,想到和Android版本有关,然后在Activity中加上如下代码,问题解决: StrictMode.setThreadPol

Cross 1万+

Http连接请求

一、HttpURLConnection 首先是URL建立一个对象, URL url=new URL(“http://www.baidu.com”); 然后就是获得 HttpURLConnection connection=url.openConnection(); 对connection进行设置即可以有 connection.setRequestMethod()等,参数有GET和POST

yuyurj的博客 505

android 4.4 从url.openConnection到Dns解析

其实并不是要分析Dns流程的,一开始是分析Android设置wifi代理,怎么起到全局代理的作用的。 因为坏习惯,在线看源码,全凭记忆,没有做笔记的习惯,忽略了一个点,直接分析到dns了,回过头才发现分析过了。而之前群里有人问应用进程hook hosts文件能不能改dns,很久之前分析过4.1,记得是有个远程进程负责dns解析的,但是太久了,细节都忘光了。 所以分析完了wifi代理、dns后记...

DaoDivDiFang的博客 937

Android URL openConnection无法打开链接

url = new URL(urlStr); HttpURLConnection urlConn = (HttpURLConnection)url.openConnection(); 发现无法创建链接,发现是ip地址弄错了,不能设成虚拟地址,必须是实际地址:如urlStr=“

genganpeng的专栏 4817
上一篇: java反射学习笔记之 动态加载类
下一篇: Git 学习笔记
我叫王哈哈
博客等级 码龄11年 36粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值