我有一个自定义对象的ArrayList,每个对象有大约10个字段,我已经设法上传到我们的服务器。问题是其中一个字段是一个字符串,其中包含我从文件转换的Base64编码字符串,而Retrofit Gson创建者似乎并不喜欢。这个问题可以通过发送没有图像的所有字段来解决,然后使用ftp上传所有图像,但如果我能以某种方式将图像放入对象中,那将会更容易。
问题:如何使用Retrofit将Base64编码的字符串作为自定义对象内的字段发送到网址?
答案 0 :(得分:1)
@FormUrlEncoded
@POST("/UploadImages")
Call<ResponseBody> postImages(@Body ArrayListImage img);
//POJO CLASS
public class ArrayListImage {
@SerializedName("image")
@Expose
private ArrayList<String> image;
public ArrayListImage(ArrayList<String> image) {
this.image=image;
}
}
答案 1 :(得分:1)
以下是我使用RequestBody
上传文件的Retrofit
代码:
RequestBody lRequestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part lFile = MultipartBody.Part.createFormData("file", file.getName(), lRequestBody);
MultipartBody.Part title = MultipartBody.Part.createFormData("title", file.getName());
MultipartBody.Part lFilenamebase64 = MultipartBody.Part.createFormData("filenamebase64", base64EncodedFileName);
编码文件名:
String base64EncodedFileName = Base64.encodeToString(file.getName().getBytes(Charsets.UTF_8), Base64.URL_SAFE | Base64.NO_WRAP);
我将api定义为:
@Multipart
@POST("/upload")
Observable<Response<ResponseBody>> uploadFile(@Part MultipartBody.Part file, @Part MultipartBody.Part title, @Part MultipartBody.Part base64EncodedFileName);
我希望它对你有所帮助。
答案 2 :(得分:0)
//Convert Object list into json string.
Gson gson = new Gson();
String objListString = gson.toJson(objectList);
@FormUrlEncoded
@POST("********")
Call<JsonObject> sendObjectList(@Field("objListString") String objListString);
And at the web end parse string into json.
@enjoy