【发布时间】:2018-06-07 04:06:04
【问题描述】:
我想使用 Retrofit 重写上传文件到服务器。
body 的服务器 api 请求是
{“file_name”: “my_pic”, “content_base64”: “MKMD….”}
在上传之前还需要压缩图片并对内容进行编码。我们当前的实现是:
Bitmap bmp = BitmapFactory.decodeFile(localPath);
ByteArrayOutputStream outputStream= new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 80, outputStream);
byte[] byteArrayImage = outputStream.toByteArray();
String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);
JSONObject jObject = new JSONObject();
try {
jObject.put("file_name", "test.jpg");
jObject.put("content_base64", encodedImage);
String jObjectString = jObject.toString();
URL url = new URL(serverPath);
...
connection.setRequestMethod("PUT");
connection.setUseCaches(false);
OutputStreamWriter wr = new
OutputStreamWriter(connection.getOutputStream());
wr.write(jObjectString);
wr.close();
...
}
我想把上面的代码改成 Retrofit 上传。在学习了使用 OkHttp 的 RequestBody 或 MultipartBody.Part 类的Retrofit Upload Example 之后。但我不知道如何转换上面的代码。
有什么建议吗?
【问题讨论】:
-
你的请求是
JSON所以不需要多部分