2016-05-16 12 views
0

Ich benutze POJO und Retrofit2 in Android, um einen REST-Service aufzurufen, um Daten zu erhalten. Ich erhalte die Daten in response.body() wie erwartet, aber ich möchte nicht, dass diese Daten einer android UI-Komponente zugewiesen werden. Ich möchte dieses zurückgegebene Objekt erhalten und zurück oder arbeiten außerhalb der onResponse.Retrofit 2 Rückantwortdatenobjekt zur weiteren Verwendung

Sorry, ich bin neu in JAVA oder Callbacks, aber bei der Suche gefunden, dass ich Callback schreiben muss, aber nicht sicher, wie es geschrieben wird. Kann mir bitte jemand helfen. Hier

ist der Code:

public String getUserIPCountry(Context context){  

    ipf = new Ipinfo(); 

    IpinfoAPI.Factory.getInstance().getCountryCode().enqueue(new Callback<Ipinfo>() { 
     @Override 
     public void onResponse(Call<Ipinfo> call, Response<Ipinfo> response) { 

      if(response.isSuccessful()){ 

       //Want to return/use below data outside of this method 
       //response.body().getCountryCode(); 
      } 
     } 

     @Override 
     public void onFailure(Call<Ipinfo> call, Throwable t) { 

     } 
    }); 

    return null; 
}  

Antwort

0

Im Betrieb getUserIPCountry Sie die Callback eingestellt, dass aufgerufen wird, wenn die Daten von dem Server ankommt. Die Ausführung stoppt nicht und wartet auf die Antwort. Wenn die Antwort vom Server OK ist, wird onResponse aufgerufen und wenn etwas schief geht, wird onFailure aufgerufen.

Also, in der onResponse Methode der Callback sollten Sie die interessierten Klassen, dass die Daten ankommt, (z. B. UI-Klassen, die die Daten anzeigt) benachrichtigen.

+0

Danke Pablo. Ich bin nur in der Lage, Daten auf UI-Elemente zu setzen oder innerhalb von Responses zu arbeiten. Was ich will, ist - ich habe ein Objekt public Ipinfo xyz, das in oncreate Methode vom Typ ipinfo erstellt und zugewiesen wird. Daher wird ein Teil von xyz einem Wert außerhalb der getUserIPCountry-Methode zugewiesen und möchte das IP-Feld nur mithilfe von xyz.setip() innerhalb von onresponse zuweisen. –

Verwandte Themen