安卓快速掌网络请求HttpUrlConnection,GET和getHttp相关示例
HttpURLConnection 是 Java 标准库中的一部分,它不依赖于特定的 Android 版本。,从 Android 9(API 级别 28)开始,Google 官方推荐使用更现代化的网络库,例如 OkHttp 或 Volley。这些库提供更简洁、强大和易用的 API,并具备更好的性能和安全性。但是仍然可以用这个简单实现了解网络请求原理.
背景知识
网络请求分为很多种,比如HTTP HTTPS soket 等,先演示一下最常用的HTTP请求
Http是Internet中广泛使用的协议,几乎所有的计算机语言和SDK都会不同程度地支持HTTP,而以网络善称的Google公司自然也会使Android SDK拥有强大的HTTP访问能力。在Android SDK中可以采用多种方式使用HTTP,例如HttpURLConnection、HttpGet、HttpPost等,HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。。
HTTP协议的主要特点可概括如下:
1、支持客户/服务器模式
2、简单快速:客户向服务请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同由于HTTP协议简单,使得HTTP服务器的程序规横小,因而通信速度很快。
3、灵活: HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记
4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间
5、无状: HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
基础知识
// http://127.0.0.1/frbments?id=3 //这个地址分为四部份,前缀,基本地址,请求地址,参数
最简单的请求核心示例如下,非完整代码,完整代码需要导包,配置权限,配置异步请求,在安卓3.0开始不建议在主线程发起网络请求
如果用getHttp 方法比较简单,示例代码如下:
private void doGet(String s) {
final String getUrl = urlAddress + method + "?sex=" + s;
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(getUrl);
HttpResponse httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
//服务器返回的值需要转换一下
String result = EntityUtils.toString(httpResponse.getEntity());
Log.d("test", result);
} else {
Log.d("test", "failed");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
如果用纯原生的方法需要将结果用流来处理示例代码如下:
package com.example.myapplicationmneu;
public class MainActivity extends AppCompatActivity {
private String UrlAddress = "http://localhost:8080/frbqd/#/login?ct=6Ad6z7vDKvS4ovBIcYbTdz7z5740Flxl/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 按扭点击监听函数绑定
findViewById(R.id.btn_notification).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
}
});
}
private void doGet(String s) throws IOException {
// 第一步,拼接网络请求地址
String getUrl = UrlAddress ;
// 第二步,得到一个网络请求url对象,从代码来看httpURLConnection是url的其中部分
URL url = new URL(getUrl);
// 第三步,创建连接对象
HttpURLConnection httpURLConnection =(HttpURLConnection) url.openConnection();
// 第四步,开始连接,一旦创建成功,此时这个对象就在连接了,就可以用流的方式得到数据
httpURLConnection.connect();
// 第五步,判断状态码如果是200.开如外理流对象
if(httpURLConnection.getResponseCode()==200){
// 得到流对象
InputStream inputStream = httpURLConnection.getInputStream();
//创建读取流的对象
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
//创建字符流对象
StringBuffer stringBuffer = new StringBuffer();
// 创建临时何存字符的字段串
String readList = "";
// 如查下一行没有数据表示读完,停止
while((readList = bufferedReader.readLine()) != null){
stringBuffer.append(readList);
}
// 关闭流和连接
inputStream.close();
httpURLConnection.disconnect();
Log.d("打印结果","falil");
}
}
}
安卓快速掌网络请求HttpUrlConnection,GET和getHttp相关示例的更多相关文章
- 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
网络请求框架总结1.xutils 此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...
- Android开发之网络请求HttpURLConnection
转:http://blog.csdn.net/guolin_blog/article/details/12452307 Android中主要提供了两种方式来进行HTTP操作,HttpURLConnec ...
- Android 利用an框架快速实现网络请求(含下载上传文件)
作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22573081来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架是完全 ...
- curl模拟安卓手机进行网络请求
$url = "http://somedomain/ver/ffffffff-e31e-85d5-ffff-ffffa6220605/2/en/b0:79:94:e7:99:4a/3.5&q ...
- Android网络请求(1)
Android网络请求(1) 安卓开发网络请求可谓是安卓开发的灵魂,如果你不会网络请求,那么你开发的应用软件就是一具没有灵魂的枯骨. 在安卓开发中进行网络请求和java中的网络请求有异曲同工之 ...
- xamarin android网络请求总结
xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...
- 安卓网络请求之——OkHttp学习
之前做安卓项目的时候,HTTP请求用的是android api中的HttpURLConnection和HttpClient,编码比较繁琐,自己封装的也不好.后来知道有很多网络请求的第三方框架,可以方便 ...
- 【安卓网络请求开源框架Volley源码解析系列】定制自己的Request请求及Volley框架源码剖析
通过前面的学习我们已经掌握了Volley的基本用法,没看过的建议大家先去阅读我的博文[安卓网络请求开源框架Volley源码解析系列]初识Volley及其基本用法.如StringRequest用来请求一 ...
- 【安卓网络请求开源框架Volley源码解析系列】初识Volley及其基本用法
在安卓中当涉及到网络请求时,我们通常使用的是HttpUrlConnection与HttpClient这两个类,网络请求一般是比较耗时,因此我们通常会在一个线程中来使用,但是在线程中使用这两个类时就要考 ...
- Android探索之HttpURLConnection网络请求
前言: 最近一直想着学习一下比较好的开源网络框架okhttp,想着学习之前还是先总结一下Android原生提供的网络请求.之前一直在使用HttpClient,但是android 6.0(api 23) ...
随机推荐
- .NET程序对接 OpenTelemetry logs
OpenTelemetry 简介 OpenTelemetry 是一个由 CNCF(Cloud Native Computing Foundation)托管的开源项目,旨在为观察性(Observabil ...
- kubernetes(k8s)
应用程序部署的演变过程 在部署应用程序的方式上,主要经历了三个时代 传统部署 互联网早期,会直接将应用程序部署在物理机上 优点: 简单,不需要其他技术的参与 缺点: 不能为应用程序定义资源使用边界,很 ...
- ETL工具-nifi干货系列 第十五讲 nifi处理器ConsumeKafka实战教程
1.上一节课我们学习了处理器PushKafka,通过该处理器往kafka中间件写数据,今天我们一起学习处理器ConsumeKafka,此处理器从kafka读取数据进行后续处理,如下图所示: 本次示例比 ...
- kettle从入门到精通 第二十七课 邮件发送
1.我们平常在做数据同步的时候,担心转换或者job没有正常运行,需要加上监控机制,这个时候就会用到邮件功能. 下图是一个简单的测试邮件发送功能的转换.在kettle.properties文件中设置邮件 ...
- kettle从入门到精通 第二十六课 再谈 kettle Transformation executor
1.前面文章有学习过Transformation executor ,但后来测试kettle性能的时候遇到了很大的问题,此步骤的处理性能太慢,导致内存溢出等问题.所以再次一起学习下此步骤的用法. 2. ...
- The solution of CF380C
problem 希望这篇题解不要明年才审完. 标签:线段树 记录 \(Lsum_p\) 为这个区间有多少个 ( 不能匹配,\(Rsum_p\) 为这个区间有多少个 ) 不能匹配. 对于叶子结点如果是 ...
- Easysearch 容量规划建议
基于容量估算 主要问题: 每天将索引多少原始数据(GB)?保留数据多少天? 原始数据膨胀率 您将强制执行多少个副本分片? 您将为每个数据节点分配多少内存? 您的内存:数据比例是多少? 原则 保留 +1 ...
- .NET5 IIS ASP.NET CORE 部署时 HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure
.NET5 IIS ASP.NET CORE 部署时 HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure 部署机器只安装了dotnet-hos ...
- 容器docker技术
我们先看看很久很久以前,服务器是怎么部署应用的! 由于物理机的诸多问题,后来出现了虚拟机. 但是虚拟化也是有局限性的,每一个虚拟机都是一个完整的操作系统,要分配系统资源,虚拟机多道一定程度时,操作系统 ...
- 算法金 | 一个强大的算法模型,GP !!
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 高斯过程算法是一种强大的非参数机器学习方法,广泛应用于回归.分类和优化等任务中.其核心 ...