Retrofit参数图片混合上传问题

发布于 2022-09-07 23:51:35 字数 1084 浏览 56 评论 0

传递的普通参数是需要加密的,无论多少个参数,加密之后变成一个字符串, Post提交的参数 是 code=加密后的字符串
类似于这样:
图片描述

然后图片是不需要加密的,就像用户编辑个人信息,然后修改了头像,和名称。然后需要更新到服务器,附带的图片不需要加密。

我采用的方式是,将请求转换成FormBody:

         //得到普通参数                      
         val commonParams = body.parts().single { part -> part.body().contentType() == MediaType.get("application/json; charset=utf-8") }
         //得到文件
         val fileParams = body.parts().first { part -> part.body().contentType() != MediaType.get("application/json; charset=utf-8") }
         //加密普通参数                  
         val encryptParams = buildEncryptParramsFromRequestBody(commonParams.body())

         val b = Buffer()
         fileParams.body().writeTo(b)
         //将文件和普通参数转换成FormBody进行提交
         val builder = FormBody.Builder().addEncoded("code", encryptParams).addEncoded("avator", b.readUtf8()).build()

         request = Request.Builder().url(request.url()).post(builder).build()

这样接口返回成功,但实际上,服务端是没有更新图像的,请问各位这一块怎么操作,万谢!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文