版权声明:此BLOG为个人维护BLOG,内容均来自原创及互连网转载。最终目的为收集整理自己需要的文章技术等内容,不涉及商业用途。 本BLOG上原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。 3、有关本站侵权 本BLOG所转载的内容,均是本人未发现有对文章版权声明的文章且无来自传统媒体。如果本BLOG侵犯了您的权益,请联系本人,本人将会在第一时间删除侵权文章 https://blog.csdn.net/qq_20221151/article/details/53408305
本博客内容一致同步到本人的博客站点:http://www.zhoutaotao.xyz 欢迎访问留言交流
OkHttp的POST、GET请求方式
- 之前看了Retrofit网络请求框架,感觉很Cool,Retrofit是基于OkHttp的二次封装,但是非常有必要回头再看看OkHttp,吃水不忘挖井人,先从最基本的POST GET请求开始吧
POST请求
- 至于为什么先写POST方式在写GET方式,这是因为啊,我写完POST的代码后发现,我需要写一篇文章记录下来,不过差不多啦
//创建一个基本请求连接
OkHttpClient okHttpClient=new OkHttpClient();
//创建表单存储
FormEncodingBuilder formEncodingBuilder=new FormEncodingBuilder();
//将参数以键值对的方式写入
formEncodingBuilder.add("name","周涛");
formEncodingBuilder.add("number","1371113");
//构建响应体,添加基本的URL以及POST参数
final Request request=new Request.Builder()
.url("http://position.c.zmit.cn/index.php/api/login")
//不小心暴露了签到系统的登陆接口啦~~~不过怕啥呢,哈哈哈
.post(formEncodingBuilder.build())
.build
//创建执行Call
Call call=okHttpClient.newCall(request
//Call进行异步执行,如果需要阻塞线程,可以使用同步执行的方式
//及时call.execute();会返回一个Response对象
//这两个回调函数均不是在主线程执行的,也就UI线程,需要更新UI,请使用下面的机制
//runOnUiThread(new Runnable() {
// @Override
//public void run() {
// Toast.makeText(getBaseContext(),content,showStyle).show();
//}
// });
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e("请求失败",e.toString());
showTOast("请求失败:"+e.toString(),Toast.LENGTH_SHORT);
}
@Override
public void onResponse(Response response) throws IOException {
showTOast("请求成功:"+response.body().string(),Toast.LENGTH_SHORT);
}
});
GET请求
- 废话不多说,上代码,只要在POST请求的基础上吧参数代码去掉就行了
- 很简单吧,其余代码都是类似的,不做复述
//创建一个基本请求连接
OkHttpClient okHttpClient=new OkHttpClient();
//创建表单存储
final Request request=new Request.Builder()
.url("http://position.c.zmit.cn/index.php/api/login")
//不小心暴露了签到系统的登陆接口啦~~~不过怕啥呢,哈哈哈
.build
//创建执行Call
Call call=okHttpClient.newCall(request);
FileUpdate的方法
OkHttpClient okHttpClient=new OkHttpClient();
//从SDCard读取文件 ,注意在androidMainFest.xml文件中写外置SD卡读取权限,还有网络权限
File file = new File(Environment.getExternalStorageDirectory(), "balabala.mp4");
//加入文件
//记得刚开始上班的时候,有个多文件上传,难坏了,使用的是Retrofit请求的方式才成功
//没有试过OkHttp上传多文件怎么样
RequestBody requestBody=RequestBody.create(MediaType.parse("application/octet-stream"),file);
final Request request=new Request.Builder()
.url("http://position.c.zmit.cn/index.php/api/login")
//这里的URl作为例子,并没有上传的功能。理解就行
.post(requestBody)
.build();
Call call=okHttpClient.newCall(request);
//老样子,。异步执行
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e("请求失败",e.toString());
showTOast("请求失败:"+e.toString(),Toast.LENGTH_SHORT);
}
@Override
public void onResponse(Response response) throws IOException {
showTOast("请求成功:"+response.body().string(),Toast.LENGTH_SHORT);
}
});
- 就是辣么简单,不过还是需要继续封装以下,要不然这么多代码写着累死了,明天继续学习OkHttp