2013-06-10 6 views
28

Als iOS-Entwickler, der mit Android zu arbeiten begann, stieß ich auf Retrofit. Ich verstehe, wie synchrone Anforderungen zu implementieren, aber Probleme beim Implementieren von asynchronen Anforderungen mit Erfolgs-/Fehlerrückrufen haben. Insbesondere ist die Callback-Syntax für mich unklar, und es gibt keine konkreten Beispiele dafür, wie man dies auf dem Retrofit website, dem Square blogpost Einführung Retrofit, oder an anderer Stelle, die ich gesehen habe. Kann jemand bitte einen Beispielcode hier posten? Ich habe im Retrofit-Repo ein Problem angemeldet und darum gebeten, die README mit diesen Informationen zu aktualisieren.So implementieren Sie einen Async-Callback mit der Retrofit-Netzwerkbibliothek von Square

Antwort

54

Nach etwas mehr Forschung und nur einfach mehr Zeit in der Android/Java-Welt verbrachte ich das mit dem Beispiel aus ihren Dokumenten.

Schnittstelle:

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

Umsetzung:

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

Vergessen Sie nicht setExecutors() aufrufen, wenn Ihr restAdapter zu schaffen. – SeanPONeil

+4

@SeanPONeil Sie müssen nur Executers() setzen, wenn der Callback auch außerhalb des Hauptthreads stattfinden soll. – gkee

+0

Nicht zu der Zeit, als ich das gepostet habe. Square fügte den Executoren Standardeinstellungen hinzu. – SeanPONeil