纠正前天的错误:
前天我写:
不知道在mapper中的增删改方法返回值int的值,和含义,在调用方法时也没有定义int来接参,都是直接调用。于是我定义int i,并打印输出,使用postman调用接口方法,debug调试i的值后,得知i只有1和0,两个取值,1代表操作成功,0代表失败,基于此我使用i对我的接口做了异常处理。
这句话理解错了,返回的int值是数据库执行了多少行数据,而我那天写的方法都是对单条数据的操作,所有返回值只有“0”和“1”,虽然不影响代码运行,但是的确是逻辑有问题。
今天写代码用到了httpURLConnection来发送post请求
来具体了解一下
httpURLConnection
了解httpURLConnection前先了解一下HTTP协议
HTTP(Hyper Text Transfer Protocol),即超文本传输协议,它规定了浏览器 和万维网服务器之间相互通信的规则。
当我们使用手机客户端访问百度网站时,会发送一个HTTP请求。当服务器端接 收到这个请求后,会做出响应并将百度首页返回给客户端浏览器。这个请求和响应的 过程就是HTTP通信的过程。
相关的接口
1、标准Java接口(java.NET)——HttpURLConnection,可以实现简单的基于 URL请求、响应功能;
2、Apache接口(org.appache.http)——HttpClient,存在API数量过多,扩展困 难等缺点。
因此,在android 6.0系统中,Google将HttpClient移除了。Google建议使用 HttpURLconnection迚行网络访问操作。
HttpURLconnection是基于http协议的,支持get,post,put,delete等各种请求 方式,最常用的就是get和post请求。
HttpURLConnection的基本用法
1、步骤1:获得HttpURLConnection类的实例
由于HttpURLConnection类是一个抽象类,丌能直接实例化对象,因此需要使用 URL的openConnection()方法创建具体的实例。
//1. 使用new关键字创建一个URL对象,并传入目标的网络地址
URL url = new URL(“https://www.baidu.com”);
//2.调用openConnection()方法,创建HttpURLConnection类的实例
HttpURLConnection connection = (HttpURLConnection)url.openConection();
2、步骤2:设置HTTP请求参数
setRequestMethod() 设置请求参数,主要有两种方式:GET请求、POST请求
setConnectTimeOut() 设置连接超时时间
setReadTimeOut() 设置读取超时时间
setRequestProperty() 设置请求头参数,主要是添加HTTP请求HEAD中的一些参数
setDoOutput() 设置是否向HttpURLConnection输出,对于POST请求,参数要放在 http正文中,因此需要设为true,默认情冴下为false
setDoInput() 设置是否从HttpURLConnection读入,默认情冴下为true
3、步骤3:调用connect()连接进程资源
4、步骤4:利用getInputStream()访问资源(GET请求)
使用getInputStream()方法只是得到一个流对象,并丌是数据,丌过我们可以从流 中读出数据。
注意 从这个流对象中只能读取一次数据,第二次读取时将会得到空数据。
步骤4:利用getOutputStream()传输POST消息(POST请求)
使用getOutputStream()方法用来传输POST消息,该方法得到的是一个输出流,该 输出流中保存的是发送给服务器端的数据。
注意 connection.setDoOutput(true); //允许写出
5、步骤5:关闭HttpURLConnection连接
所有的操作全部完成后,就可以调用disconnect()方法将这个HTTP连接关闭掉。 if(connection != null) onnection.disconnect();
注意
(1)声明网络权限:
(2)网络请求,需要单独开辟一个子线程,然后等到数据返回成功后回到 主线程迚行UI操作。