2016-05-12 5 views
1

私はちょうどRetrofitとRXJavaから始めています。私は、ファイルをアップロードし、空のボディとステータス200(すべてがうまくいく場合)のhttp応答を返すapi呼び出しを持っています。私はと改造することを翻訳:RXJava/RxAndroidを使用したレトロフィット:Observableはどのように機能しますか?

@PUT("/in") 
Observable<Void> uploadFile(@Body ResponseBody file); 

しかしWHE mApi.uploadFile(F)を使用する場合、私は例外を取得:

Caused by: java.lang.IllegalArgumentException: Could not locate call 
adapter for rx.Observable<java.lang.Void>. Tried: 
    * retrofit.ExecutorCallAdapterFactory 
    at retrofit.Retrofit.nextCallAdapter(Retrofit.java:207) 
    at retrofit.Retrofit.callAdapter(Retrofit.java:175) 
    at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45) 

私はRxJavaない空の応答をすることをhereを読んで、最高実用的にはVoidを使用することです。それはRXJavaでは動作しませんか?アダプターを実装する必要がありますか? 。

編集1:

CallAdapterFactoryが答えhereに述べたように改造するために追加が必要です。 Fileパラメーターを変換する必要もありました。それでも、エラーは残ります。

リクエストをレトロフィットにマップする方法を理解した後の2番目のステップは、大量のファイルアップロードを連鎖させることです。それ、どうやったら出来るの?

RXJava + Retrofitやサンプルの使用に関する高度なチュートリアルへのリンクも歓迎します。

答えて

2

私はあなたの問題はあなたが引数としてファイルを渡すことはできません、あなたはそう改修コールの署名はのようになります

RequestBody.create(mediaType, file); 

としてRequestBodyのPARAMを渡す必要があると思います:うん

@PUT("/in") 
Observable<Void> uploadFile(RequestBody file); 
+0

...私はそれを考え出した。私の問題は、 "Observable "で使用されているVoid型によって発生しているようです。 –

関連する問題