安卓快速掌网络请求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) ...
随机推荐
- Android 12(S) MultiMedia(十四)ESQueue
之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究. 1.构造函数 ES ...
- WPF开发快速入门【5】DataGrid的使用
概述 DataGrid是最常用的一种列表数据展现控件,本文介绍DataGrid的一些常用操作,包括:展示.新增.删除.修改等.以下代码基于Stylet框架实现. 数据展示 DataGrid用于对象列表 ...
- 10W QPS高并发,如何防止重复下单?
小北说在前面 10wqps高并发,如何防止重复提交/支付订单? 10wqps高并发,如何防止重复下单? 10wqps高并发,如何防止重复支付? 10wqps高并发,如何解决重复操作问题? 最近有小伙伴 ...
- 音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)
一.现象 ReplayKit2 适配中 UPLOAD进程被系统杀掉 日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal) 二.内存占用分析 1)系统 ...
- SpringBoot系列(六)如何使用 MockMvc 或者 RestTemplate 发请求进行单元测试
本文主要功能: 对最简单的/hello接口,如何编写单元测试用例. 1.首先,要引入以下依赖 <dependency> <groupId>org.springframework ...
- ABC332
D 我们可以把矩阵 \(\text{A}\) 看成 \({p,q}\). \(p\) 指现在一行最开始在哪里,\(q\) 指现在这一列最开始在哪里. 于是我们枚举 \(p\) 和 \(q\) 所有可能 ...
- 说一下 JSP 的 4 种作用域?
page:代表与一个页面相关的对象和属性. request:代表与客户端发出的一个请求相关的对象和属性.一个请求可能跨越多个页面,涉及多个 Web 组件:需要在页面显示的临时数据可以置于此作用域. s ...
- Springboot - log4j2
log4j2 springboot中默认的日志框架是logback,如果要使用log4j2,需要先去除默认的日志框架 <!-- 去除系统默认的logback日志框架,使用自己配置的框架 --&g ...
- word文档生成视频,自动配音、背景音乐、自动字幕,另类创作工具
简介 不同于别的视频创作工具,这个工具创作视频只需要在word文档中打字,插入图片即可.完事后就能获得一个带有配音.字幕.背景音乐.视频特效滤镜的优美作品. 这种不要门槛,没有技术难度的视频创作工具, ...
- 【踩坑】.NET 8.0 自定义IExceptionHandler不生效
中间件实现异常处理 在ASP.NET Core里,我们可以使用中间件(Middleware)实现全局的异常处理. 如内置的异常处理中间件 UseExceptionHandler app.UseExce ...