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 封装相关推荐

  1. 使用Retrofit2封装适用于组件化项目的网络库

    版权声明:本文为博主原创文章,未经我的允许不得转载! 转载请标明出处: http://blog.csdn.net/guiying712/article/details/74427258 ,本文出自:[ ...

  2. Android网络请求归纳 HttpUrlConnection| Vollety|OKHttp3|Retrofit2

    1.网络基础知识: Android网络API库有哪些?      HttpUrlConnection: jdk内置      HttpClient:android提供,6.0被删除      Voll ...

  3. RXJava3+OKHTTP3+Retrofit2(观察者设计模式)讲解+实战

    废话不多说,全部代码请拉到最后!!!! retrofit是载体(基于okhttp),rxjava 就是一个实现异步操作的库. 它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁 ...

  4. Retrofit2封装之路(请求参数加密解密)(二)

    Retrofit2 用例 public interface GitHubService {@GET("users/{user}/repos")Call<List<Rep ...

  5. Android网络框架okhttp3简单封装

    1:在demo得build文件中添加依赖(这里以3.8.1版本为例) dependencies {compile 'com.squareup.okhttp3:okhttp:3.8.1' } 2:对网络 ...

  6. okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...

    easy-okhttp 简介 项目easy-okhttp是对okhttp网络框架(https://github.com/square/okhttp)上层封装, 支持文件上传和下载,表单(含文件)提交, ...

  7. Retrofit2源码解析(一)

    本文基于Retrofit2的2.4.0版本 implementation 'com.squareup.retrofit2:retrofit:2.4.0' Retrofit2底层基于OkHttp3,是对 ...

  8. 自学Android开发 关于OkHttp3的request和respond拦截打印Log

    一.需求和问题 在开发Android项目时,一定需要和后端对接网络请求,但在因为现在都JSON格式的数据结构,在数据字段前后不一致是Android端是无法判断是是字段错误还是数据本身没有值.所有在数据 ...

  9. Android中的设计模式之观察者模式

    参考 <设计模式:可复用面向对象软件的基础 >5.7 Observer 观察者 对象行为型模式 <设计模式解析> 18.4 Observer模式 <Android源码设计 ...

最新文章

  1. Hadoop-虚拟机环境准备
  2. 计算机应用基础网络统考操作,全国网络统考《计算机应用基础》完整最新题库及答案[整理].pdf...
  3. SharePoint Conference 2008 - Day 1
  4. 如何在ubuntu下安装合适的翻译词典
  5. jsp mysql驱动程序_JSP通过JDBC驱动MySQL数据库方法
  6. MySQL怎么打开explain_MySQL干货之-利用EXPLAIN优化查询
  7. 各大公司容器云的技术栈对比
  8. 你对JVM三色标记的理解嘛?
  9. 16进制数用空格分开 tcp_面试时,你是否被问到过TCP/IP协议?
  10. 二叉树的相关题(叶子结点个数,最大深度,找特殊值结点(值不重复),判断两个树是否相同,判断两个数是否为镜像树,是否为子树,)
  11. js中setAttribute 的兼容性
  12. 15.3D效果,盒阴影和滤镜
  13. js上传文件获取文件流
  14. 【软件体系结构】软件体系结构笔记
  15. 江南大学物联网工程学院数据库课程实验一作业1实验报告
  16. 笔记本蓝牙显示输入码无效_蓝牙键盘输入码错误无法连接笔记本(win10)
  17. android opop状态栏透明,oppo状态栏美化
  18. 【Android踩过的坑】5.android.content.res.Resources$NotFoundException: String resource ID #0x0
  19. 【真题分享】2021京东春招java开发面试
  20. 的确,你读过的书藏着自己的命运

热门文章

  1. [导入]如何给表、列加注释?http://www.oradb.net
  2. 2021-11-18Collections
  3. HTML+CSS+JavaScript复习笔记持更(四)——多媒体篇
  4. Qt学习(九):QT中使用线程
  5. hashmap 复制_复杂链表的复制
  6. TransparentBitmap函数设置透明位图的原理分析
  7. python 自定义函数和循环_Python循环语句——对for循环和while循环应用自定义函数公式的实践,套用,练习...
  8. Python-OpenCV 笔记5 -- 几何变换(Geometric Transformations)
  9. 第四范式陈雨强获评首届世界人工智能大会云帆奖 | 2020WAIC
  10. freebsd原理与设计精要(1)-freebsd与unix简介