全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何通过二级域名建站提升品牌影响力?  大型企业网站制作流程,做网站需要注册公司吗?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  在线制作视频网站免费,都有哪些好的动漫网站?  如何快速上传建站程序避免常见错误?  建站主机选哪家性价比最高?  已有域名和空间如何快速搭建网站?  建站之星如何实现五合一智能建站与营销推广?  建站之星如何一键生成手机站?  常州自助建站工具推荐:低成本搭建与模板选择技巧  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何安全更换建站之星模板并保留数据?  建站之星logo尺寸如何设置最合适?  如何通过万网虚拟主机快速搭建网站?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  盐城做公司网站,江苏电子版退休证办理流程?  如何选择服务器才能高效搭建专属网站?  北京网站制作网页,网站升级改版需要多久?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  制作网站公司那家好,网络公司是做什么的?  ,如何利用word制作宣传手册?  图册素材网站设计制作软件,图册的导出方式有几种?  网站制作话术技巧,网站推广做的好怎么话术?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  如何高效配置香港服务器实现快速建站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何在建站主机中优化服务器配置?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  建站ABC备案流程中有哪些关键注意事项?  个人摄影网站制作流程,摄影爱好者都去什么网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  建站主机SSH密钥生成步骤及常见问题解答?  网站制作公司排行榜,抖音怎样做个人官方网站  建站主机与服务器功能差异如何区分?  网站制作企业,网站的banner和导航栏是指什么?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  建站主机如何安装配置?新手必看操作指南  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  建站之星北京办公室:智能建站系统与小程序生成方案解析  如何在腾讯云服务器快速搭建个人网站?  建站之星导航如何优化提升用户体验?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  建站之星后台管理系统如何操作?  nginx修改上传文件大小限制的方法  制作销售网站教学视频,销售网站有哪些?  建站之星代理平台如何选择最佳方案?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况? 

您的项目需求

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