クラス例の呼び出しアダプタを作成できません。簡単な質問

クラス例の呼び出しアダプタを作成できません。簡単な質問

私は、SimpleXml で Retrofit 2.0.0-beta1 を使用しています。REST サービスから Simple (XML) リソースを取得したいと考えています。SimpleXML を使用した Simple オブジェクトのマーシャリング/アンマーシャリングは正常に機能します。

このコードを使用する場合 (2.0.0 より前のコードから変換):

final Retrofit rest = new Retrofit.Builder()
    .addConverterFactory(SimpleXmlConverterFactory.create())
    .baseUrl(endpoint)
    .build();
SimpleService service = rest.create(SimpleService.class);
LOG.info(service.getSimple("572642"));

サービス:

public interface SimpleService {

    @GET("/simple/{id}")
    Simple getSimple(@Path("id") String id);

}

次の例外が発生します:

Exception in thread "main" java.lang.IllegalArgumentException: Unable to create call adapter for class example.Simple
    for method SimpleService.getSimple
    at retrofit.Utils.methodError(Utils.java:201)
    at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:51)
    at retrofit.MethodHandler.create(MethodHandler.java:30)
    at retrofit.Retrofit.loadMethodHandler(Retrofit.java:138)
    at retrofit.Retrofit$1.invoke(Retrofit.java:127)
    at com.sun.proxy.$Proxy0.getSimple(Unknown Source)

何が足りないのでしょうか? 戻り値の型を でラップするとCall機能することはわかっています。ただし、サービスがビジネス オブジェクトを型として返すようにしたい (同期モードで動作)。

アップデート

追加の依存関係を追加した後、.addCallAdapterFactory(RxJavaCallAdapterFactory.create())さまざまな回答で示唆されているように、次のエラーが引き続き発生します。

Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class simple.Simple. Tried:
 * retrofit.RxJavaCallAdapterFactory
 * retrofit.DefaultCallAdapter$1

ベストアンサー1

の場合にはコトリンそしてコルーチンsuspendこの状況は、次の関数を呼び出すときに API サービス関数をマークし忘れたときに発生しましたCoroutineScope(Dispatchers.IO).launch{}:

使用法:

    val apiService = RetrofitFactory.makeRetrofitService()

    CoroutineScope(Dispatchers.IO).launch {

        val response = apiService.myGetRequest()

        // process response...

    }

API サービス.kt

interface ApiService {

       @GET("/my-get-request")
       suspend fun myGetRequest(): Response<String>
}

おすすめ記事