Android网络请求(2)
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
Android网络请求(2)的更多相关文章
- Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...
- xamarin android网络请求总结
xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...
- Android 网络请求框架Retrofit
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...
- Android 网络请求及数据处理
Android 网络请求: 1.Volley http://blog.csdn.net/t12x3456/article/details/9221611 2.Android-Async-Http ...
- Android 网络请求Retrofit + RxJava
一.背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构.现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Androi ...
- android 网络请求Ⅰ
本章讲述在android开发中,常用的网络请求操作.网络请求利用android基本的HttpURLConnection连接URL和开源网络请求包AsyncHttpClient.本次网络请求以调取天气接 ...
- Android网络请求通信之Volley
一.Volley简介 Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库.以下是对Volley的简单归纳. Volley的优点: 使网络通信更快.更简单. ...
- android 网络请求库的比较
源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLCon ...
- 浅论Android网络请求库——android-async-http
在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Insta ...
- Android网络请求框架
本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...
随机推荐
- DFS算法-求集合的所有子集
目录 1. 题目来源 2. 普通方法 1. 思路 2. 代码 3. 运行结果 3. DFS算法 1. 概念 2. 解题思路 3. 代码 4. 运行结果 4. 对比 1. 题目来源 牛客网,集合的所有子 ...
- 【项目实战】自备相机+IMU跑通Vins-Mono记录
前言 初次接触SLAM,公司要求用自己的设备来跑通vinsmono这个程序,虽然已经跑通了别人的数据包,但是真正自己上手来运行这个程序,发现真的是困难重重,特意在此记载下来整个过程,以供大家参考. 我 ...
- 查找Linux下的大目录或文件
目录 du -h --max-depth=1 du -h --max-depth=2 | sort -n du -hm --max-depth=2 | sort -n du -hm --max-dep ...
- filebeat知识点
在Filebeat的根目录下,有一个叫做filebeat.yml的文件. filebeat.inputs: - type: log enabled: true paths: - ./sample.lo ...
- RabbitMQ各个端口被占用的进程说明
官方地址:https://www.rabbitmq.com/networking.html#ports 端口 描述 4369 erlang 发现端口,被 epmd 占用,用于 RabbitMQ 节点和 ...
- CentOS 7.7系统安装Redis 6.0.3
前提操作 避免出现如下的错误 yum -y install gcc tcl yum -y install centos-release-scl yum -y install devtoolset-9- ...
- 【前端必会】HtmlWebpackPlugin 和 SplitChunksPlugin 是什么?
背景 了解什么是webpack插件,在来看一下不能不知道的两个插件 HtmlWebpackPlugin 有了这个插件,webpack执行后会自动帮我们在dist目录生成一个html文件,并且添加bun ...
- Ant Design槽位失效
保证数据结构中有scopedSlots: { title: 'title' }, 即包含scopedSlots属性 使用时名字应保证一致 例如: 数据结构: treeData: [ { key ...
- 请推荐下比较适合中小企业的ERP系统,如odoo,除前期开发和不定期完善,有没有其他固定月费或年费?
odoo的话你自己就可以下载开源的安装使用的啊,如果你要别人帮你开发和完善做技术服务的话一般都还是要年费的,主要是因为要帮你做维护或修bug什么的,自己能搞定的话自然不需要的哦.只是odoo使用的是p ...
- [题解] Codeforces 1349 D Slime and Biscuits 概率,推式子,DP,解方程
题目 神题.很多东西都不知道是怎么凑出来的,随意设置几个变量,之间就产生了密切的关系.下次碰到这种题应该还是不会做罢. 令\(E_x\)为最后结束时所有的饼干都在第x个人手中的概率*时间的和.\(an ...