Abd*_*del 9 android json web-services retrofit retrofit2
我在请求正文中发送对象,类似于:
{
"title":"test",
"description":"test",
"images":[]
}
@POST("create-data")
Call<JsonObject> publishData(@Body MyObject object);
Run Code Online (Sandbox Code Playgroud)
没有图像,它的工作正常.从文档中我可以找到如何使用文件上传文件MultipartBody.Part,我的问题是:
非常感谢你.
我参考了这篇文章:
https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server
@Multipart
@POST("uploadHeadPic")
Call<UploadHeadPicResponseModel> uploadHeadPic(@Part MultipartBody.Part file, @Part("json") RequestBody json);
Run Code Online (Sandbox Code Playgroud)
public void doUploadHeadPic(@NonNull String filePath) {
if (!MNetworkUtil.isNetworkAvailable()) {
MToastUtil.show("??????");
return;
}
File file = new File(filePath);
String json = new Gson().toJson(new UploadHeadPicRequestModel());
if (!file.exists()) {
MToastUtil.show("?????");
return;
}
progressDialog.show();
avatarSimpleDraweeView.setEnabled(false);
MApiManager.getService().uploadHeadPic(
MultipartBody.Part.createFormData("file", file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file)),
RequestBody.create(MediaType.parse("multipart/form-data"), json))
.enqueue(new OnRetrofitCallbackListener<UploadHeadPicResponseModel>(mActivity) {
@Override
public void onSuccess(UploadHeadPicResponseModel responseModel) {
progressDialog.dismiss();
avatarSimpleDraweeView.setEnabled(true);
if (responseModel != null) {
String serverAvatarUrl = responseModel.data.headPicPath;
if (!TextUtils.isEmpty(serverAvatarUrl)) {
UserModel userModel = MUserManager.getInstance().getUser();
if (userModel != null) {
userModel.setAvatarUrl(serverAvatarUrl);
MUserManager.getInstance().updateOrInsertUserInfo(userModel);
MToastUtil.show("??????");
}
}
}
}
@Override
public void onFailure(int status, String failureMsg) {
progressDialog.dismiss();
avatarSimpleDraweeView.setEnabled(true);
MToastUtil.show((TextUtils.isEmpty(failureMsg) ? "????" : failureMsg) + " : " + status);
}
});
}
Run Code Online (Sandbox Code Playgroud)
可能这可能会有所帮助,我没试过
@Multipart
@POST("uploadHeadPic")
Call<UploadHeadPicResponseModel> uploadHeadPic(@Part MultipartBody.Part file0, @Part MultipartBody.Part file1, @Part("json") RequestBody json);
Run Code Online (Sandbox Code Playgroud)
public void doUploadHeadPic(@NonNull String filePath) {
MApiManager.getService().uploadHeadPic(
MultipartBody.Part.createFormData("file0", file0.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file0)),
MultipartBody.Part.createFormData("file1", file1.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file1)),
RequestBody.create(MediaType.parse("multipart/form-data"), json))
.enqueue(new OnRetrofitCallbackListener<UploadHeadPicResponseModel>(mActivity) {
@Override
public void onSuccess(UploadHeadPicResponseModel responseModel) {
}
@Override
public void onFailure(int status, String failureMsg) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
小智 6
在我的情况下(上传到使用Spring构建的服务器)我需要更改MediaType为RequestBody:
RequestBody.create(MediaType.parse("application/json"), json)
RequestBody.create(MediaType.parse("image/jpg"), file)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8410 次 |
| 最近记录: |