画像をアップロードしようとすると、画像ファイルではなくバイトとして送信され続けます。これは非常に簡単な呼び出しです。イメージ以外のパラメータを送信する必要はありません。私はログをフォーマットする方法を知らないので、要求されない限りここにエラーを掲載しません。Retrofit 2.0を使用して画像をアップロードする方法
サービス:
public interface FileUploadService {
@Multipart
@POST("upload_profile_picture")
Call<ResponseBody> uploadProfilePicture(@Part("profile_picture") RequestBody file);
}
作られているコールは、(SO主words..dumbするポストを必要とするため、ファイルが生成される以前、このコードを削除する必要がありました。):
// Generate the service from interface
FileUploadService service = ServiceGenerator.createService(FileUploadService.class, this);
// Create RequestBody instance from file
RequestBody requestFile =
RequestBody.create(MediaType.parse("image/*"), imageFile);
Log.d(LOG_TAG, "formed file");
// finally, execute the request
Call<ResponseBody> call = service.uploadProfilePicture(requestFile);
Log.d(LOG_TAG, "sending call");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call,
Response<ResponseBody> response) {
Log.d(LOG_TAG, "success");
Log.d(LOG_TAG, response.toString());
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.d(LOG_TAG, "failure");
Log.e(LOG_TAG, t.getMessage());
}
});
MediaType.parseメソッドの問題はありますか?私は "multipart/form-data"、 "image/jpeg"、そして上記を試してみましたが、何も効果がありませんでした。
サーバチームは、は、がバイトを受信し、画像ファイルはないと言っています。
すべてのバイトを送信しているので、私は400を得続けます。どうすればこれを送ることができますか?私はマルチパートや何で送る必要がありますか?私が見たことから、あなたは@Bodyでメソッドのparamにタグを付けるだけで、上記を実行する必要があり、それはすべて動作するはずです。誰がなぜこれが起こっているのか教えていただけますか?ありがとう!
私はこれは受け入れられた答えでなければならないと思う:) – BNK