Retrofit参数图片混合上传问题

大尾巴狼
  • 245

传递的普通参数是需要加密的,无论多少个参数,加密之后变成一个字符串, 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()

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

回复
阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏