

Android网络请求(2) - 高同学,你好
source link: https://www.cnblogs.com/nhgtx/p/16915605.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Android网络请求(2)
在android网络开发中,除get请求外常见的还有post、put、delete这三种,接下来我们将详细讲解这三种请求及参数
GET请求
我们使用过get请求了,对于我们的日常生活中get请求毫无疑问是最常用的请求方式,大部分的浏览器搜索都是通过get请求,如在百度上搜索"花",那么我们在浏览器上的地址栏中就能看到一串链接
https://www.baidu.com/s?wd=%E8%8A%B1&rsv_spt=1&rsv_iqid=0xc02e78cd00039b5a&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=5&rsv_sug1=1&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=1533&rsv_sug4=2173
在这串链接中https是传输协议,www是一个子域,也是万维网的缩写,baidu是二级域名,com是一级域名,s是访问路径,以问号开始每一个参数都是以=赋值,以&分割,等号前是参数名,等号后是参数值。
对于日常浏览中,通过get请求往往是请求一个浏览器页面,实际上是请求一串数据,因为get请求一般只用于查询数据并不会对数据库中的数据产生任何影响,所以日常开发中get请求的使用是非常频繁的。
get请求的使用方式上一章已经说过了,就不再演示了。
POST请求
post我们在浏览器上没安装插件时无法完成的,我们可以下载postman或在在线调试网站中进行post请求测试。在安全性上post请求要比get请求更加安全,同时不会暴露我们所携带的参数。但是post请求也并不绝对安全,它同样能够被抓包软件抓取数据,如果对安全性有要求,那么还需要对数据进行加密。
post请求一般用于登陆验证,创建订单等对安全性和身份验证有一定需求的场景。现在常见的post请求四大方式有:
(1)、application/x-www-form-urlencoded
(2)、multipart/form-data
(3)、application/json
(4)、text/xml
而在安卓开发中最常见的是第三个application/json,将它设置在头文件中是告诉服务端我们请求时所发送的参数是以json格式发送的。关于json是什么以及其它三种方式感兴趣的可以去找一找相关资料。
那么我们开始创建我们的post请求吧。
编写请求方法
public static String post(String src,String json){ HttpURLConnection connection = null; BufferedReader reader = null; StringBuilder response = null; try{ URL url = new URL(src);//新建URL connection = (HttpURLConnection)url.openConnection();//发起网络请求 connection.setConnectTimeout(8000);//连接最大时间 connection.setReadTimeout(8000);//读取最大时间 // 最大的差别就是修改了请求方式添加了请求头文件数据以及通过OutputStreamWriter发送了携带的json数据 connection.setRequestMethod("POST");//请求方式 connection.setRequestProperty("Content-Type", "application/json"); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); out.write(json); out.flush(); out.close(); InputStream in = connection.getInputStream(); reader = new BufferedReader(new InputStreamReader(in));//写入reader response = new StringBuilder(); String line; while((line = reader.readLine()) != null){ response.append(line); } }catch (Exception e){//异常抛出 e.printStackTrace(); }finally { if(reader != null){ try{ reader.close();//io流开了要关,不然容易内存泄露 }catch (IOException e){ e.printStackTrace(); } } if(connection != null){ connection.disconnect();//同理,关闭http连接 } } return response.toString(); }
那么我们去试验一下这个请求吧,我们登录试一试,携带我们的账号密码,看看会返回什么。
String json = "{\"username\":\"test01\",\"password\":\"123456\"}"; new Thread(new Runnable() { @Override public void run() { String post = InterNet.post("http://xxx.xxx.xxx/xxx-xx/xxx/login", json);//这串网址请自行使用其它可发送post请求的链接 System.out.println(post); } }).start();
通过我们人工构造一个json数据,新建线程进行访问并打印,我们得到
因为我们使用的账号密码并不存在所以登录失败了,我们可以使用自己的账号密码去尝试登录自己想测试的网站,当然有些网站的登录需要二级验证,这个我们暂且不讲。
PUT请求
put请求常用于修改数据,如用户信息,密码等。使用的方法与post请求相似,只需要修改请求方式post改为put即可,一般需要携带用户认证信息token,用于确认是哪个用户需要修改自身的信息。在请求中,使用它一般只是修改信息,所以对于post请求来讲,它更加安全,post请求创建用户时是会创建数据的,put请求不会。
也不演示怎么写了,直接把上面的post请求拿过来修改connection.setRequestMethod("POST");为PUT即可。
DELETE请求
put请求的请求方式与post相识,那么delete请求的请求方式也与get请求相识,也是在get请求的基础上修改connection.setRequestMethod("GET");为DELETE即可。
DELETE请求一般用于删除表中的数据。也是可以携带数据的。如用户身份验证信息token之类的。
相信看到这,大家也知道了,四种请求方法对应数据库的增删改查,但也有些后端开发人员喜欢所有的请求都通过post方式,所以大家不要固定思维,请求方式只是便于我们更好理解以及规范开发,并非一定要通过get查询,通过post增加,也可以通过delete增加数据,主要看后端开发人员是怎样规定的。
四种请求类型中post请求是对数据最安全的,但对数据库就不那么友好,因为它会增加数据库中的数据,可能会导致意外的错误,同样,这些不是我们该关系的,是服务端开发人员该去规划和设计的。
好了,四种请求方式都讲完了。接下来我们来讲讲安卓开发中最常用的网络框架---okhttp
Recommend
-
75
网络请求是android客户端很重要的部分。下面从入门级开始介绍下自己Android网络请求的实践历程。希望能给刚接触Android网络部分的朋友一些帮助。本文包含: HTTP请求&响应 Get&Post [HttpClient & HttpURLConnection](#HttpClient & HttpURLConnec...
-
13
Android网络请求 ...
-
6
MVP模式 1.view 2.presenter 3.model 1.view职责,继承view接口,实现方法,持有presenter,this传入presenter Presenter 2.presenter职责,实现databridge接口,接收view实现,处理逻辑,完成后使用view回调,...
-
9
Android最镪网络请求开源项目, 国人自主研发, 打破国外垄断 耗时三年只为国家崛起而开源! 完全开源不盈利! 希望有志之士和我一起参与! 这是我们全新自主研发的网络框架 当然我不是 Retrofit 套壳
-
3
自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个。本篇文章对常见的网络请求库进行一个总结。 HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnecti...
-
3
距离上一篇文章跟我一起开发商业级IM(3)—— 长连接稳定性之连接及重连发布的时间,大概已有一年多,先跟大家说声抱歉。主要是因为工作太忙,业务需求过多,没办法专心写博客。先立个Flag:IM系列文...
-
9
Android网络请求(1) 安卓开发网络请求可谓是安卓开发的灵魂,如果你不会网络请求,那么你开发的应用软件就是一具没有灵魂的枯骨。 在安卓开发中进行网络请求和java中的网络请求有异曲同工之妙,但是安卓软件毕竟的安装在...
-
12
Android网络请求(3) 网络请求框架OkHttp 本节我们来讲解OkHtpp网络请求框架 什么是网络请求框架 在我的理解中,网络请求框架是为了方便我们更加便捷规范的进行网络请求所...
-
7
Android网络请求(终) 网络请求框架Retrofit Retrofit底层是由OkHttp封装的,Retrofit对于注解的使用十分频繁,所以不了解注解的同学们可以去查查资料什么的。 这里有一个小细节,要使用Retrofit至少需...
-
6
Android网络请求(4) 网络请求框架Volley Volley是Google在2013年5月15日到17日在旧金山Moscone中心举办网络开发者年会中推出的Android异步网络加载框架和图片加载框架,它特别适合数据体量小且通讯频繁的网络操作...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK