2016-04-01 3 views
0

Meine MainActivity hat Basis-URL, ich versuche, eine JSON-Datei vom Server abrufen, mithilfe von Retrofit.Abrufen einer JSON-Datei mit Retrofit2

Hier ist ein Teil des Codes in MainActivity

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == R.id.action_get_data) { 
      if (isOnline()) { 
       requestData(); 

      } else { 
       Toast.makeText(this, "Network isn't available", Toast.LENGTH_LONG).show(); 
      } 
     } 
     return false; 
    } 

    private void requestData() { 

     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(ENDPOINT) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

     FlowersAPI service = retrofit.create(FlowersAPI.class); 
     Call<List<Flower>> call = service.getFeed(); 

     call.enqueue(new Callback<List<Flower>>() { 
      @Override 
      public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) { 
         flowerList = response.body(); 
       updateDisplay(); 
      } 

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

      } 

     }); 

    } 

    protected void updateDisplay() { 
     //Use FlowerAdapter to display data 
     FlowerAdapterPicaso adapter = new FlowerAdapterPicaso(this, 
       R.layout.item_flower, flowerList); 
      setListAdapter(adapter); 
    } 

Und hier meine Schnittstelle das Ergebnis also keine Daten in der Listenansicht zu erhalten, zeigt

public interface FlowersAPI { 

    @GET("/feeds/flowers.json") 
    public Call<List<Flower>> getFeed(); 

} 

Ich bin nicht in der Lage ist, jedes anderes Beispiel Nachrüstungen von früheren Versionen, und meine andere Frage ist? Muss GsonConverterFactory hinzugefügt werden?

+0

Ich verwende die neueste Version von Retrofit, und ist es notwendig, OkHttpClient zu verwenden, wie in einigen anderen Beispielen zu sehen? –

+0

'Konnte Konverter nicht erstellen' ... Warum haben Sie die GsonConverterFactory kommentiert? –

+0

sogar mit GsonConverterFactory geben mir Fehler - java.lang.NoClassDefFoundError: Fehlgeschlagene Auflösung von: Lcom/google/gson/Gson; bei retrofit2.converter.gson.GsonConverterFactory.create (GsonConverterFactory.java:42) bei com.hanselandpetal.catalog.MainActivity.requestData (MainActivity.java:69) –

Antwort

1

In Ihrem Code fehlt Ihnen der HTTP-Client für Anfragen, bevor Sie den API-Dienst erstellen.

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(ENDPOINT) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .client(new OkHttpClient.Builder().build()) 
     .build();