前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Retrofit:responseBodyがnullのsuspend関数を定義する

課題

Retrofit2でレスポンスが空のsuspend関数を定義したい場合、以下の書き方だとエラーになる。

suspend fun like( itemId:Int ) :Unit  // 単にCallを外しただけだとNG。Void, Unit?も同様
<クラス名> was null but response body type was declared as non-null

対応

Response<Unit> とすることで レスポンスbodyのnullチェックが行われなくなる。

suspend fun like( itemId:Int ) : Response<Unit> // Response<Void>も可
suspend fun postLike() :Response<Unit>

問題

Response<Unit> を使っているとレスポンスコードが200台以外でも例外にならないようだ。

参考

github.com