retrofit2を使用して、私のAPIにpngのアップロードリクエストを行いたいと思います。これはPOSTリクエストでなければならず、pngはフォームデータフィールド "img"として渡されます。 Postmanを使用してAPIをテストしたところ、すべて動作しましたが、retrofit2を使用してアンドロイドアプリからこのリクエストを行いたいと考えています。この図書館はそのような要求をすることさえ可能ですか?retrofit2を使用してPOSTリクエストを行う方法フォームデータフィールドの1つがファイルの場合
答えて
は、画像をアップロードするにはdepedencies
コンパイル 'com.amitshekhar.android:android-networking:0.0.1' を追加しますインターフェイスと必要なエンドポイントメソッドの定義:
public interface ApiClient {
@Multipart
@POST("/content")
Call<ResponseBody> uploadImage(@Part("image") RequestBody image);
}
それは、シンプルで早いのが特長アンドロイドネットワーキング・ライブラリであるとして、あなたはそのためFast Android Networkingライブラリーを試すことができかもしれません。私はOKHttpの上に構築され、Retrofitよりも多くの機能とカスタマイズを備えたこのライブラリを作成しました。
File file = new File("/storage/emulated/0/Pictures/MyApp/test.jpg");
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(Headers.of("Content-Disposition",
"form-data; name=\"image\";filename=\""
+ file.getName() + "\""),
RequestBody.create(MEDIA_TYPE_JPG, file))
.build();
// Todo: replace with your own interface e.g. apiClient
Call<ResponseBody> call = apiClient.uploadImage(requestBody);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.v("Upload", "success");
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e("Upload error:", t.getMessage());
}
});
例:あなたのGradleファイルで
は
File file = new File(imagePath);
AndroidNetworking.upload(url)
.addMultipartFile("img",file)
.setTag("uploadTest")
.setPriority(Priority.HIGH)
.build()
.setUploadProgressListener(new UploadProgressListener() {
@Override
public void onProgress(long bytesUploaded, long totalBytes) {
// do anything with progress
}
})
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
}
別のライブラリを使用することはできません。私はすでに私のアプリでどこでもretrofit2を使っています。ライブラリを交換することは負担になります。 – Egis
@Egis:Ok Bro、私は改造によってそれを解決しようとし、すぐにお知らせします。 https://github.com/amitshekhariitbhu/Fast-Android-Networkingにいくつかのフィードバックを送ろうと思っていました。 –
- 1. Pythonリクエストを使用してこのPOSTリクエストを行う方法
- 2. Retrofit2 POSTリクエストを使用してサーバーに画像をアップロード
- 3. Ember:hrefを使用してPOSTリクエストを行う方法
- 4. FirebaseでAJAXを使用してPOSTリクエストを行う方法は?
- 5. 本文にパラメータ@typeがある場合、Powershellを使用してPOSTリクエストを行う方法
- 6. 401スクライブを使用してPOSTを行う場合oauth java
- 7. フォームデータフィールドをPOST呼び出しに渡す
- 8. Jersey 2.26クライアントを使用してqueryParamでHTTP POSTリクエストを行う方法は?
- 9. 現在のリクエストでAJAXが1つの場合はそれがPOSTのものである場合
- 10. NightmareJsでPOSTリクエストを行う方法
- 11. OKHttpを使用して空のボディでPOSTを行う方法
- 12. Camelを使用してPOSTリクエストを行う
- 13. 取り込みを使用してPOSTリクエストを行う
- 14. POSTの方法2文字列と1オブジェクトRetrofit2から?
- 15. AngularJSで、multipart/relatedを使用する方法1つのリクエストでJSONオブジェクトとファイルをPOSTする
- 16. NPMを使用してCSSファイルを1つのファイルに結合
- 17. mwbotを使用して後続のリクエストを行う方法Mediawiki
- 18. In_arrayがPHPを使用してtrueの場合、1を追加する方法
- 19. Dojo:dojo.io.iframe.sendを使用してPOSTリクエストを送信する方法
- 20. POSTを使用してCURLリクエストでJSONを渡す方法
- 21. pcapを使用してPOSTリクエストをフィルタリングする方法は?
- 22. 行データテーブルの場合の使用方法
- 23. AJAXを使用してPOSTリクエストを行うことができません
- 24. RetroFit2を使用してOnResponseのデータを返す方法
- 25. CURLを使用してPHPでGETリクエストを行う方法
- 26. PHPを使用してhttpsリクエストを行う方法Http_Request2()
- 27. HttpURLConnectionを使用してoauth2リクエストを行う方法
- 28. javascriptを使用して投稿リクエストを行う方法
- 29. パースセッショントークンを使用してgraphqlでリクエストを行う方法
- 30. vstest.console.exeを使用して1つのテストが失敗した場合、テストを停止する方法は?
それは動作します!どうもありがとうございました。私はかなり長い間これを苦労していました。 – Egis