私は正常にこのコードで改造を経て、私のREST APIにアップロード画像を設定します。Retrofit 2で空のファイルをアップロードするには?
File imageFile = ImagePicker.getFileFromResult(this, resultCode, data);
RequestBody requestFile =
RequestBody.create(MediaType.parse("multipart/form-data"), imageFile);
MultipartBody.Part body =
MultipartBody.Part.createFormData("userpic", imageFile.getName(), requestFile);
RetrofitClient.compositeSubscription.add(RetrofitClient.getService().updateProfileUserpic("Token " + RevolutionApp.getInstance().getUserToken(), body).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Profile>() {
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) { }
@Override
public void onNext(Profile profile) {
mProfileFragment.fetchProfileData();
}
}));
は今、私は私の私のAPIに空のファイル(null)を送信する必要があります。それを実装する方法は?
public void updateProfileData(ProfilePost profile, final OnProfileUpdatedListener listener) {
Observable<Profile> observable;
if (profile.getUserpicPart() != null) {
observable = RetrofitClient.getService().updateProfileData(profile.asHashMap(), profile.getUserpicPart());
} else {
observable = RetrofitClient.getService().updateProfileData(profile.asHashMap());
}
RetrofitClient.compositeSubscription.add(observable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Profile>() {
...
}));
}
補強メソッドシグネチャ:
@PUT("/api/v1/profile/")
@Multipart
Observable<Profile> updateProfileData(@Header("Authorization") String authorization, @PartMap() Map<String, RequestBody> partMap, @Part MultipartBody.Part image);
@PUT("/api/v1/profile/")
@Multipart
Observable<Profile> updateProfileData(@Header("Authorization") String authorization, @PartMap() Map<String, RequestBody> partMap);
とモデルモデル更新する
APIインターフェース方法:
MultipartBody.Part.createFormData("userpic", imageFile.getName(), requestFile)
ここ
どのようにこの問題を解決しましたか教えてください – Rgv
答えはこちらです。 –