OkHttp3 + retrofit2 封装
0.下载文件
1.gradle 添加
compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'com.squareup.okhttp3:okhttp:3.4.1'compile 'com.squareup.okio:okio:1.9.0'
2.AndroidManifest.xml 权限
<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3.Application中初始化
HttpUtil.getInstance().init(this, "http://baiqi.ej-cloud.com:8070/iot/");
4.调用
HttpUtil.getInstance().get(new HttpUtil.Builder().url("user/token/init").params("key", "1").params("type", "4").callBackSuccess(new CallBackSuccess() {@Overridepublic void onSuccess(String json) {TopicResponse topicResponse = JsonUtil.fromJson(json, TopicResponse.class);tv.setText(topicResponse.data.id);}}));
5.添加上传图片功能 HttpUtil.java文件中
private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");public void uploadImages(List<String> selectedImages, String url) {// mImgUrls为存放图片的url集合MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);for (int i = 0; i < selectedImages.size(); i++) {File f = new File(selectedImages.get(i));if (f != null) {builder.addFormDataPart("img" + i, f.getName(), RequestBody.create(MEDIA_TYPE_PNG, f));}}MultipartBody requestBody = builder.build();//构建请求Request request = new Request.Builder().url(url)//地址.post(requestBody)//添加请求体 .build();okHttpClient.newCall(request).enqueue(new okhttp3.Callback() {@Overridepublic void onFailure(okhttp3.Call call, IOException e) {Log.wtf(TAG, "request " + call.request().url());Log.wtf(TAG, "上传失败:e.getLocalizedMessage() = " + e.getLocalizedMessage());}@Overridepublic void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {Log.wtf(TAG, "request " + call.request().url());Log.wtf(TAG, "上传照片成功:response = " + response.body().string());}});}
调用
HttpUtil.getInstance().uploadImages(selectedImages, "http://baiqi.ej-cloud.com/iotlife/user/opinion/imgUpload&key=1&image=uicon&token="+token+"&feedbackId" +feedbackId );
参考:
https://github.com/gengqiquan/HttpUtil
https://github.com/hongyangAndroid/okhttputils
转载于:https://www.cnblogs.com/Westfalen/p/6764059.html
OkHttp3 + retrofit2 封装相关推荐
- 使用Retrofit2封装适用于组件化项目的网络库
版权声明:本文为博主原创文章,未经我的允许不得转载! 转载请标明出处: http://blog.csdn.net/guiying712/article/details/74427258 ,本文出自:[ ...
- Android网络请求归纳 HttpUrlConnection| Vollety|OKHttp3|Retrofit2
1.网络基础知识: Android网络API库有哪些? HttpUrlConnection: jdk内置 HttpClient:android提供,6.0被删除 Voll ...
- RXJava3+OKHTTP3+Retrofit2(观察者设计模式)讲解+实战
废话不多说,全部代码请拉到最后!!!! retrofit是载体(基于okhttp),rxjava 就是一个实现异步操作的库. 它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁 ...
- Retrofit2封装之路(请求参数加密解密)(二)
Retrofit2 用例 public interface GitHubService {@GET("users/{user}/repos")Call<List<Rep ...
- Android网络框架okhttp3简单封装
1:在demo得build文件中添加依赖(这里以3.8.1版本为例) dependencies {compile 'com.squareup.okhttp3:okhttp:3.8.1' } 2:对网络 ...
- okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...
easy-okhttp 简介 项目easy-okhttp是对okhttp网络框架(https://github.com/square/okhttp)上层封装, 支持文件上传和下载,表单(含文件)提交, ...
- Retrofit2源码解析(一)
本文基于Retrofit2的2.4.0版本 implementation 'com.squareup.retrofit2:retrofit:2.4.0' Retrofit2底层基于OkHttp3,是对 ...
- 自学Android开发 关于OkHttp3的request和respond拦截打印Log
一.需求和问题 在开发Android项目时,一定需要和后端对接网络请求,但在因为现在都JSON格式的数据结构,在数据字段前后不一致是Android端是无法判断是是字段错误还是数据本身没有值.所有在数据 ...
- Android中的设计模式之观察者模式
参考 <设计模式:可复用面向对象软件的基础 >5.7 Observer 观察者 对象行为型模式 <设计模式解析> 18.4 Observer模式 <Android源码设计 ...
最新文章
- Hadoop-虚拟机环境准备
- 计算机应用基础网络统考操作,全国网络统考《计算机应用基础》完整最新题库及答案[整理].pdf...
- SharePoint Conference 2008 - Day 1
- 如何在ubuntu下安装合适的翻译词典
- jsp mysql驱动程序_JSP通过JDBC驱动MySQL数据库方法
- MySQL怎么打开explain_MySQL干货之-利用EXPLAIN优化查询
- 各大公司容器云的技术栈对比
- 你对JVM三色标记的理解嘛?
- 16进制数用空格分开 tcp_面试时,你是否被问到过TCP/IP协议?
- 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)
- js中setAttribute 的兼容性
- 15.3D效果,盒阴影和滤镜
- js上传文件获取文件流
- 【软件体系结构】软件体系结构笔记
- 江南大学物联网工程学院数据库课程实验一作业1实验报告
- 笔记本蓝牙显示输入码无效_蓝牙键盘输入码错误无法连接笔记本(win10)
- android opop状态栏透明,oppo状态栏美化
- 【Android踩过的坑】5.android.content.res.Resources$NotFoundException: String resource ID #0x0
- 【真题分享】2021京东春招java开发面试
- 的确,你读过的书藏着自己的命运
热门文章
- [导入]如何给表、列加注释?http://www.oradb.net
- 2021-11-18Collections
- HTML+CSS+JavaScript复习笔记持更(四)——多媒体篇
- Qt学习(九):QT中使用线程
- hashmap 复制_复杂链表的复制
- TransparentBitmap函数设置透明位图的原理分析
- python 自定义函数和循环_Python循环语句——对for循环和while循环应用自定义函数公式的实践,套用,练习...
- Python-OpenCV 笔记5 -- 几何变换(Geometric Transformations)
- 第四范式陈雨强获评首届世界人工智能大会云帆奖 | 2020WAIC
- freebsd原理与设计精要(1)-freebsd与unix简介