Retrofit参数图片混合上传问题
传递的普通参数是需要加密的,无论多少个参数,加密之后变成一个字符串, 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论