全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android OkHttp Post上传文件并且携带参数实例详解

Android OkHttp Post上传文件并且携带参数

这里整理一下 OkHttp 的 post 在上传文件的同时,也要携带请求参数的方法。

使用 OkHttp 版本如下:

compile 'com.squareup.okhttp3:okhttp:3.4.1'

代码如下:

protected void post_file(final String url, final Map<String, Object> map, File file) {
    OkHttpClient client = new OkHttpClient();
    // form 表单形式上传
    MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
    if(file != null){
      // MediaType.parse() 里面是上传的文件类型。
      RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);
      String filename = file.getName();
      // 参数分别为, 请求key ,文件名称 , RequestBody
      requestBody.addFormDataPart("headImage", file.getName(), body);
    }
    if (map != null) {
      // map 里面是请求中所需要的 key 和 value
      for (Map.Entry entry : map.entrySet()) {
        requestBody.addFormDataPart(valueOf(entry.getKey()), valueOf(entry.getValue()));
      }
    }
    Request request = new Request.Builder().url("请求地址").post(requestBody.build()).tag(context).build();
    // readTimeout("请求超时时间" , 时间单位);
    client.newBuilder().readTimeout(5000, TimeUnit.MILLISECONDS).build().newCall(request).enqueue(new Callback() {
      @Override
      public void onFailure(Call call, IOException e) {
        Log.i("lfq" ,"onFailure");
      }

      @Override
      public void onResponse(Call call, Response response) throws IOException {
        if (response.isSuccessful()) {
          String str = response.body().string();
          Log.i("lfq", response.message() + " , body " + str);

        } else {
          Log.i("lfq" ,response.message() + " error : body " + response.body().string());
        }
      }
    });

  }

这里说明一点,就是 MultipartBody.Builder 的 addFormDataPart 方法,是对于之前的 addPart 方法做了一个封装,所以,不需要再去配置 Header 之类的。

如果只是单纯的 Post 携带参数,那么直接使用 FormBody ,代码如下:

FormBody.Builder formBody = new FormBody.Builder();
if (map != null) {
  for (Map.Entry entry : map.entrySet()) {
    formBody.add(String.valueOf(entry.getKey()),String.valueOf(entry.getValue()));
  }
}

以上只是针对项目中遇到的问题进行整理,需要了解更多,请自行查阅大神们的解析。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # OkHttp  # Post上传文件  # Post上传文件传参  # Post  # Android retrofit上传文件实例(包含头像)  # android 上传文件到服务器代码实例  # Android实现上传文件功能的方法  # Android中实现OkHttp上传文件到服务器并带进度  # Android实现上传文件到服务器实例详解  # Android上传文件到服务端并显示进度条  # android 开发中使用okhttp上传文件到服务器  # Android上传文件到服务器的方法  # Android WebView 上传文件支持全解析  # Android程序开发通过HttpURLConnection上传文件到服务器  # Android使用Retrofit上传文件功能  # 上传文件  # 上传  # 也要  # 不需要  # 希望能  # 大神  # 分别为  # 再去  # 谢谢大家  # 表单  # 所需要  # 整理一下  # 请自行  # client  # form  # create  # OkHttpClient  # map  # gt  # file 


相关文章: 山东网站制作公司有哪些,山东大源集团官网?  常州企业建站如何选择最佳模板?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  再谈Python中的字符串与字符编码(推荐)  西安大型网站制作公司,西安招聘网站最好的是哪个?  C++中引用和指针有什么区别?(代码说明)  岳西云建站教程与模板下载_一站式快速建站系统操作指南  代购小票制作网站有哪些,购物小票的简要说明?  如何通过虚拟机搭建网站?详细步骤解析    行程制作网站有哪些,第三方机票电子行程单怎么开?  如何在宝塔面板中创建新站点?  高端企业智能建站程序:SEO优化与响应式模板定制开发  建站之星后台密码遗忘或太弱?如何重置与强化?  如何选择靠谱的建站公司加盟品牌?  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何零基础在云服务器搭建WordPress站点?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  个人摄影网站制作流程,摄影爱好者都去什么网站?  网站app免费制作软件,能免费看各大网站视频的手机app?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  IOS倒计时设置UIButton标题title的抖动问题  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  ,网页ppt怎么弄成自己的ppt?  大连网站制作公司哪家好一点,大连买房网站哪个好?  建站之星微信建站一键生成小程序+多端营销系统  香港服务器WordPress建站指南:SEO优化与高效部署策略  建站主机服务器选型指南与性能优化方案解析  建站之星免费版是否永久可用?  网页设计与网站制作内容,怎样注册网站?  建站主机选虚拟主机还是云服务器更好?  c# await 一个已经完成的Task会发生什么  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何破解联通资金短缺导致的基站建设难题?  ,交易猫的商品怎么发布到网站上去?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何确认建站备案号应放置的具体位置?  网站制作免费,什么网站能看正片电影?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  建站之星CMS五站合一模板配置与SEO优化指南  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  如何通过网站建站时间优化SEO与用户体验?  如何高效完成自助建站业务培训?  如何高效配置IIS服务器搭建网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  图册素材网站设计制作软件,图册的导出方式有几种?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  制作网站的软件免费下载,免费制作app哪个平台好?  建站主机选择指南:服务器配置与SEO优化实战技巧  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。