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相关示例的更多相关文章

  1. 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比

    网络请求框架总结1.xutils     此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...

  2. Android开发之网络请求HttpURLConnection

    转:http://blog.csdn.net/guolin_blog/article/details/12452307 Android中主要提供了两种方式来进行HTTP操作,HttpURLConnec ...

  3. Android 利用an框架快速实现网络请求(含下载上传文件)

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22573081来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架是完全 ...

  4. curl模拟安卓手机进行网络请求

    $url = "http://somedomain/ver/ffffffff-e31e-85d5-ffff-ffffa6220605/2/en/b0:79:94:e7:99:4a/3.5&q ...

  5. Android网络请求(1)

    Android网络请求(1) ​ 安卓开发网络请求可谓是安卓开发的灵魂,如果你不会网络请求,那么你开发的应用软件就是一具没有灵魂的枯骨. ​ 在安卓开发中进行网络请求和java中的网络请求有异曲同工之 ...

  6. xamarin android网络请求总结

    xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...

  7. 安卓网络请求之——OkHttp学习

    之前做安卓项目的时候,HTTP请求用的是android api中的HttpURLConnection和HttpClient,编码比较繁琐,自己封装的也不好.后来知道有很多网络请求的第三方框架,可以方便 ...

  8. 【安卓网络请求开源框架Volley源码解析系列】定制自己的Request请求及Volley框架源码剖析

    通过前面的学习我们已经掌握了Volley的基本用法,没看过的建议大家先去阅读我的博文[安卓网络请求开源框架Volley源码解析系列]初识Volley及其基本用法.如StringRequest用来请求一 ...

  9. 【安卓网络请求开源框架Volley源码解析系列】初识Volley及其基本用法

    在安卓中当涉及到网络请求时,我们通常使用的是HttpUrlConnection与HttpClient这两个类,网络请求一般是比较耗时,因此我们通常会在一个线程中来使用,但是在线程中使用这两个类时就要考 ...

  10. Android探索之HttpURLConnection网络请求

    前言: 最近一直想着学习一下比较好的开源网络框架okhttp,想着学习之前还是先总结一下Android原生提供的网络请求.之前一直在使用HttpClient,但是android 6.0(api 23) ...

随机推荐

  1. MR+meta分析的摘录

    第四篇公众号:来自微信 天桥下的卖艺者 零基础说科研,仅为个人学习用,如有侵权,可以删除 吸烟没什么创意,唯一的创意就是加入了MR和meta分析,作者显示介绍吸烟与多种疾病之间的因果关系扔不明确, 第 ...

  2. C++笔记(13)数组的引用和引用的数组

    数组的引用 数组有二个特性,影响作用在数组上的函数:一是不能复制数组,二是使用数组名时, 数组名会自动指向其第一个元素的指针. 因为不能复制,所以无法编写使用数组类型的形参,数组会自动转化为指针.比如 ...

  3. python相关常见安装问题

    1 Centos7安装pip 参考链接:centos7 pip升级 - fuhaizi - 博客园 (cnblogs.com) Centos7默认pip版本: 使用默认pip版本安装numpy库,会报 ...

  4. 使用C代码实现读取文件中的hex字符串,转换为字节数组

    举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...

  5. react css-in-js

    CSS-in-JS是一种技术,而不是一个具体的库实现.简单来说CSS-in-JS就是将应用的CSS样式写在JavaScript文件里面,而不是独立为一些css,scss或less之类的文件,这样你就可 ...

  6. C# .NET HttpWebRequest 按每个(单个)请求跳过证书校验

    C# .NET HttpWebRequest 按每个(单个)请求跳过证书校验 自签名证书 HTTPS TLS . 使用.NET 4.5 新加的属性 HttpWebRequest.ServerCerti ...

  7. [踩坑记录] Vue3 customRef 传入对象没有进入set方法

    问题描述 学习Vue3 Ref 相关 API 的时候,遇到了 customRef 这个 API,它可以让我们自定义 ref 的更新的过程 但是使用 customRef 有一个问题就是,如果你传入的是初 ...

  8. .NET下 支持大小写不敏感的JSON Schema验证方法

    问题 有很多应用程序在验证JSON数据的时候用到了JSON Schema. 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它 ...

  9. 在Linux驱动中使用proc子系统

    在Linux驱动中使用proc子系统 背景 proc文件系统是个简单有用的东东:驱动创建一个proc虚拟文件,应用层通过读写该文件,即可实现与内核的交互. 本文适用于3.10以后的内核,v3.10以前 ...

  10. Python pip 切换为国内镜像源

    参考文章:https://codeplayer.vip/p/j7tmc [windows] 备份记录指令:(永久全局设置pypi国内镜像源地址) 1 pip config --global set g ...