私はアンドロイドライブラリを作成し、機器テストを使用してユニットテストを行っています。Android Retrofit 2.0はMultipartBody.Parメソッドを使用して画像、ビデオ、オーディオをアップロードします
これは私のコードは、(コントローラクラス)
File file = new File("/storage/emulated/0/DCIM/Facebook/FB_IMG_1496146656900.jpg");
RequestBody reqFile = RequestBody.create(MediaType.parse("image/jpeg"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), reqFile);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), noteId);
String notebookId = getNotebookId(projectId);
if (isSessionAvailable(notebookId)) {
String session = getNotebookSession(notebookId);
Call<ResponseBody> call = mApiNotes.requestNotesAttachments(session, name, body);
call.enqueue(new NoteAttachmentCallBacks.AddNoteAttachmentCallback(assetUploadCallbacks));
}
され、改造インターフェースは
@Multipart
@POST("/NotebookAsset")
Call<ResponseBody> requestNotesAttachments(@Header("Cookie") String notebookSession, @Part("note_id") RequestBody noteId, @Part MultipartBody.Part image);
あるしかし、私は、コードを実行すると、これは動作しません。レトロフィットインターフェースクラスへの呼び出し後、テストはブラウズして終了しません。テストは継続して実行されますが、終了することはありません。アセットがアップロードされていないとみなします。
大雑把に私は、
デバイスのリソースにアクセスする権限に問題があると考えました。そこで、マニフェストファイルへのアクセス許可を追加しました。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
しかし、解決策ではありません。結果は同じです。
この問題をどうぞご覧ください。私はこの問題で完全にブロックしました。