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. 春松客服入驻Rainbond开源应用商店

    "做好开源客服系统" 春松客服是拥有坐席管理.渠道管理.机器人客服.数据分析.CRM 等功能于一身的新一代客服系统.将智能机器人与人工客服完美融合,同时整合了多种渠道,结合 CRM ...

  2. (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识

    背景: 再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息. 说明: 其意义在于告知浏网站是用什么语言或者框架编写的.解决办法就是修改该响应头为一个错误的值,将攻 ...

  3. 点击li 该li变色

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. work12

    day12   一.请简述集合框架. 集合是单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set.其中,List的 ...

  5. Java代码规范equals, for continue

    代码规范equals, for continue 代码规范1 if(v.getPartner().contains("文案")){ } //修改成: if("文案&quo ...

  6. 【长文】带你搞明白Redis

    本文使用第一人称来介绍Redis 一.概述 Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化 ...

  7. 天翼云安装nexus3.37.1

    有点操蛋,官网网络太慢了! 百度了不少网友的内容,综合如下 总体是个皮毛,但已经可以用于开发了! 一.下载和安装 https://download.sonatype.com/nexus/3/nexus ...

  8. Vim编辑的小技巧

    Vim编辑的小技巧 如何快速纠错 Ctrl + h 删除上一个字符, Ctrl + w 删除上一个单词, Ctrl + u 删除当前行. 从编辑模式快速切换到Nornal模式 1.Esc 2.Ctrl ...

  9. Wireshark抓包分析理解DHCP协议及工作流程

    一.DHCP简介   DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,前身是BOOTP协议.在大型局域网中,需要给很多主机配置地址信息,如果采用传统 ...

  10. cv2 判断图片是冷还是暖

    把图片的颜色空间转为HSV H表示色调(下图横轴), 图片的平均H值可用于区分冷暖