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

  1. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  2. xamarin android网络请求总结

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

  3. Android 网络请求框架Retrofit

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  4. Android 网络请求及数据处理

    Android 网络请求: 1.Volley   http://blog.csdn.net/t12x3456/article/details/9221611 2.Android-Async-Http  ...

  5. Android 网络请求Retrofit + RxJava

    一.背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构.现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Androi ...

  6. android 网络请求Ⅰ

    本章讲述在android开发中,常用的网络请求操作.网络请求利用android基本的HttpURLConnection连接URL和开源网络请求包AsyncHttpClient.本次网络请求以调取天气接 ...

  7. Android网络请求通信之Volley

    一.Volley简介 Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库.以下是对Volley的简单归纳. Volley的优点: 使网络通信更快.更简单. ...

  8. android 网络请求库的比较

    源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLCon ...

  9. 浅论Android网络请求库——android-async-http

    在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Insta ...

  10. Android网络请求框架

    本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...

随机推荐

  1. 使用ESP8266nodeMCU 向微信推送模板数据

    使用HTTPS协议向微信公众号推送消息,(使用ESP8266的低成本实现) 前几天被朋友问到这个东西的实现方式,花了一下午时间研究一下,特此记录.没有排版比较乱. 一丶前往微信公众平台注册微信微信公众 ...

  2. MinIO客户端快速入门指南

    官方文档地址:http://docs.minio.org.cn/docs/master/minio-client-quickstart-guide MinIO Client (mc)为ls,cat,c ...

  3. Elasticsearch:Elasticsearch SQL介绍及实例(二)

    转载自:https://blog.csdn.net/UbuntuTouch/article/details/105699014

  4. tcp_tw_recycle参数引发的系统问题

    文章转载自: https://blog.csdn.net/zhuyiquan/article/details/68925707

  5. Docker Compose的安装及命令补全

    安装Compose Compose的安装有多种方式,例如通过shell安装.通过pip安装.以及将compose作为容器安装等等.本文讲解通过shell安装的方式.其他安装方式如有兴趣,可以查看Doc ...

  6. Alertmanager篇

    报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警报规则在 Prometheus 定义,警报规则触发以后,才会将信息转发到给独立的组件 Alertmanage ...

  7. 初试 Prometheus + Grafana 监控系统搭建并监控 Mysql

    转载自:https://cloud.tencent.com/developer/article/1433280 文章目录1.Prometheus & Grafana 介绍1.1.Prometh ...

  8. 整理一些Windows桌面运维常用的命令,并且整合成脚本

    github地址:alittlemc/toy: 编写些脚本将运维经常所用到小玩意所集成在一起 (github.com) 持续更新! 前言 做过桌面运维的大佬们应该可以很明显感受到这份工作所需要的技能不 ...

  9. uoj221【NOI2016】循环之美

    前面部分比较简单,就是无脑化式子,简单点讲好了. 首先肯定在\((x,y)=1\)时才考虑这个分数,要求纯循环的话,不妨猜猜结论,就是y必须和K互质.所以答案是\(\sum_{i=1}^n \sum_ ...

  10. 一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.怎么处理慢查询 2.ACID靠什么保证的 3.什么是MVCC 4.mysql主从同步原理 5.简述Myisam和inn ...