2013-06-10 27 views
28

Androidで動作するiOSデベロッパーとして、Retrofitに出会いました。私は同期要求を実装する方法を理解していますが、成功/失敗コールバックで非同期要求を実装する際に問題があります。具体的には、コールバックの構文は私には不明であり、Retrofit website、Retrofitを紹介するSquare blogpost、または他の場所でこれを行う方法の具体例はありません。誰かがこれにいくつかのサンプルコードを投稿してくださいか? Retrofitのレポで、この情報でREADMEを更新するかどうかを尋ねました。SquareのRetrofitネットワーキングライブラリを使用して非同期コールバックを実装する方法

答えて

54

Android/Javaの世界でもう少し研究をして、もっと時間を費やした後、私はこれをドキュメントの例を使って考え出しました。

インタフェース:

@GET("/user/{id}/photo") 
void listUsers(@Path("id") int id, Callback<Photo> cb); 

実装:

RestAdapter restAdapter = new RestAdapter.Builder() 
      .setServer("baseURL")  
      .build(); 
ClientInterface service = restAdapter.create(ClientInterface.class); 

Callback callback = new Callback() { 
    @Override 
    public void success(Object o, Response response) { 

    } 

    @Override 
    public void failure(RetrofitError retrofitError) { 

    } 
}; 
service.listUsers(666, callback); 
+3

あなたrestAdapterを作成するとき)(setExecutorsを呼び出すことを忘れないでください。 – SeanPONeil

+4

@SeanPONeilコールバックをメインスレッドからも実行させたい場合は、setExecutors()を実行するだけです。 – gkee

+0

私はそれを投稿した時点ではありません。 Squareはエグゼクティブのために正当なデフォルトを追加しました。 – SeanPONeil

関連する問題