2017-06-21 12 views
0

データをサーバーに送信する呼び出しがあります。すべてが正常であれば、サーバーは無効な応答を返します。しかし、エラーが発生した場合、私はデータを取り戻します。Retrofit 2とRxJava 2を使ったハンドル無効と非無効応答

エラーが発生した場合には、CustomResponseというオブジェクトがあります。問題は、要求が成功したとき、レトロフィットは、メッセージと例外をスローしていることである。ここではjava.io.EOFException: End of input at line 1 column 1 path $

が呼び出しです:

@POST("/updateObject") 
Observable<CustomResponse> updateObject(@Body CustomObject requestData); 

私は研究のビットを行なったし、私はObservable<Response<Void>> ...を使用することができることを読まなく、中そのケースでは、応答にデータが含まれているときにどのように管理する必要がありますか?

+0

成功した場合の実際の対応は何ですか?本当に体は全くありませんか? – TooManyEduardos

+0

レスポンスは 'OkHttp:< - END HTTP(0バイトボディ)'なので、実際にはボディはありません。 – Eselfar

+0

[Retrofit 2で空のレスポンスボディを処理するにはどうすればよいですか?](https://stackoverflow.com/questions/33228126/how-can-i-handle-empty-response-body-with-retrofit-2) –

答えて

0

私はこれを試したことはありませんが、まずCustomResponseをヌル可能にしたラッパークラスを作成します。このような

何か:

public class SomeWrapper { 
    @Nullable CustomResponse customResponse; 
} 

次に、あなたのレトロフィット/ Rxの呼び出しで、あなたはこれにそれを変更することができます

@POST("/updateObject") 
Observable<SomeWrapper> updateObject(@Body CustomObject requestData); 

ショットという与え、それが動作するかどうか私に知らせてください。

+0

Thxを使って解決しましたが、動作しません。 RetrofitはJSONを解析しようとしますが、ボディが存在しないためにまだ失敗します。 – Eselfar

+0

ごみ。ごめんね。 – TooManyEduardos

関連する問題