我已经使用 Retrofit 很长时间了,但是在这个巨大的更新之后,它有点难:) 我的问题是我需要在图像编码的 base64 中以 formUrlEncoded 形式发送一个发布请求。
没有图像,以下请求可以正常工作
@FormUrlEncoded
@POST("mypath")
Call<BooleanResponse> updateUser(@FieldMap HashMap<String, String> updatedValues);
但是当我尝试包含图像时,Base64 编码以及然后我得到内部服务器错误 - 我知道这与服务器端无关,因为我有另一个应用程序使用 HttpPost 调用此服务并且工作得很好。
这就是我从图像中获取 base64 数据的方式,并将其添加到地图中,我也会传递给 updateUser 请求,但这只是行不通。
public static String getProfileImage(ImageView imageView) {
imageView.buildDrawingCache();
Bitmap bm = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 40, baos);
byte[] b = baos.toByteArray();
return Base64.encodeToString(b, Base64.DEFAULT);
}
当我搜索时,我发现 Retrofit 通过 Gson 请求使用一些序列化,除非我告诉它不要这样做!正如在这个问题
但我不知道如何把它放在 Retrofit2 中,有什么建议吗?