Android网络请求框架----okHttp3
来源:互联网 发布:python txt 加一列 编辑:程序博客网 时间:2024/05/16 19:03
okhttp GitHub地址:
https://github.com/square/okhttp
最新的OkHttp依赖可以到官方的GitHub上去添加。
目前官方的依赖地址为:
compile ‘com.squareup.okhttp3:okhttp:3.6.0’
Get请求
直接进入主题:
// 1、拿到OKHttpClient对象 OkHttpClient okHttpClient=new OkHttpClient(); // 2、构造Request //Request是构造者模式,所以使用的时候要.Builder Request.Builder builder=new Request.Builder(); Request reqyest=builder.get().url("http://www.baidu.com").build(); // 3、将Request封装为Call Call call=okHttpClient.newCall(reqyest); // 4、执行Call /* Response response=call.execute(); //直接执行 需要抛出异常*/ call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失败以后的方法 } @Override public void onResponse(Call call, Response response) throws IOException { //成功以后回调的方法 String res=response.body().string(); //回调一个字符串 } });
最后在Manifests中打开网络权限即可使用Get请求请求网络数据了。
get请求头的格式:
例: url+”login?username=chengdu&password=123456”
POST请求
post请求大体步骤和GET请求差不多,具体如代码所示
//获得一个功能强大的FormBody表单 RequestBody formBody=new FormBody.Builder() .build(); //2.构造Request Request.Builder builder=new Request.Builder(); Request request=builder.url("http://www.imooc.com/").post(formBody).build(); // 3、将Request封装为Call executeRequest(request);
RequestBody的数据格式都要指定Content-Type,常见的有三种:
- application/x-www-form-urlencoded 数据是个普通表单
- multipart/form-data 数据里有文件
- application/json 数据是个json
之后还要加上 charset=utf-8
POST Json例子
public void postJson(){ //获得一个FormBody表单 RequestBody requestBody=RequestBody. create(MediaType.parse( "application/json;charset=utf-8"),"{Json字符串}"); //2.构造Request Request.Builder builder=new Request.Builder(); Request request=builder.url("http://www.imooc.com/").post(requestBody).build(); // 3、将Request封装为Call executeRequest(request); }
POST 上传一个图片
public void postFile(){ File file=new File(Environment.getExternalStorageDirectory(),"banana.jpg"); if (!file.exists()){ Log.e("-------","不存在"); return; } //获得一个FormBody表单 RequestBody requestBody=RequestBody. create(MediaType.parse( "application/octet-stream; charset=utf-8"),file); //2.构造Request Request.Builder builder=new Request.Builder(); Request request=builder.url("http://www.imooc.com/").post(requestBody).build(); // 3、将Request封装为Call executeRequest(request); }
下载文件
public void downloadFile(){ Request.Builder builder=new Request.Builder(); Request request=builder .get() .url("所要下载文件的文件路径") .build(); Call call=okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失败以后的方法 Log.e("----","失败以后的方法"); } @Override public void onResponse(Call call, Response response) throws IOException { InputStream inputStream=response.body().byteStream(); int len=0; File file=new File(Environment.getExternalStorageDirectory(), "zc.jpg"); byte[] buf =new byte[128]; FileOutputStream fos=new FileOutputStream(file); while ((len= inputStream.read(buf))!=-1){ fos.write(buf,0,len); } fos.flush(); fos.close(); inputStream.close(); } });
下载图片并且设置
//下载图片并且设置 public void downloadSetImage(){ Request.Builder builder=new Request.Builder(); Request request=builder .get() .url("所要下载文件的文件路径") .build(); Call call=okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失败以后的方法 Log.e("----","失败以后的方法"); } @Override public void onResponse(Call call, Response response) throws IOException { InputStream inputStream=response.body().byteStream(); final Bitmap bitmap= BitmapFactory.decodeStream(inputStream); runOnUiThread(new Runnable() { @Override public void run() { mImageView.setImageBitmap(bitmap); } }); } }); }
0 0
- Android网络请求框架----okHttp3
- Android OkHttp3网络请求框架使用入门
- 笔记:Android OkHttp3网络请求框架详解
- 网络请求框架(OKHttp3.0)
- okhttp3的网络请求框架
- 网络请求篇--okhttp3框架
- Android网络请求框架之——okhttp3
- Android-网络框架01OKHttp3
- android 网络框架之okhttp3
- 基于OkHttp3封装网络请求框架
- OkHttp3-Android网络请求框架常用用法介绍与实例(mob请求天气预报)
- OkHttp3-Android网络请求框架常用用法介绍与实例(mob请求天气预报),还好!
- Android网络请求框架----Okhttp3完全解析(2),封装框架
- Android网络请求框架----Okhttp3完全解析(1),使用篇
- Android网络框架OKhttp3学习笔记
- mvp okhttp3,网络请求
- OkHttp3请求网络回顾
- Okhttp3网络请求框架+MVP设计模式简单实战
- 博客网站(5)-Models
- Two Sum
- Android Retrofit Multipart图片上传至webapi,客户端发送请求,服务端却收到两个请求的原因
- 射频识别技术漫谈(23)——ISO15693的载波、调制与编码
- swift Double 四舍六入五单双
- Android网络请求框架----okHttp3
- Stereo Matching文献笔记之(四):《Stereo Matching Using Tree Filtering》读后感~
- 腾讯云:教你快速搭建学生的第一个个人博客
- aoj0189 Convenient Location floyd-warshall最短路
- Android PopupWindow怎么合理控制弹出位置
- FSCapture[个人认为最好的截图工具]
- html 实现全选
- 文件过滤器的使用
- 值传递、指针传递和引用传递