2016-01-14 3 views
1

J'ai fait this tutorial en utilisant Android Studio IDE.Exception fatale. Utiliser Retrofit2-beta3 ne peut pas récupérer les données d'apiUrl en utilisant retrofit2

Le problème que j'ai est que le tutoriel a été fait avec les bibliothèques anciennes de gson et retrofit 1.8.0 ...

je suivais le long bien avec retrofit2.0-beta3 jusqu'à ce que je suis tombé sur cette erreur que je cant semblent résoudre ..

enter image description here

Il a quelque chose à voir avec cette ligne ... (cette ligne est dans mon MainActivity.Java sous onCreate())

SCService scService = SoundCloud.getService(); 
    scService.getRecentTracks(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()), new Callback<List<Track>>() { 
     @Override 
     public void onResponse(Response<List<Track>> tracks) { 
      Log.d("TAG", "ONRESPONSE() - -- - some else wrong"); 
      // response.isSuccess() is true if the response code is 2xx 
      if (tracks.isSuccess()) { 
       Log.d("TAG", "ONRESPONSE()_isSuccess? - -- - some else wrong"); 
       List<Track> track = tracks.body(); 
       loadTracks(track); 
      } else { 

       Log.d("TAG", "some else wrong"); 
      } 
     } 

     @Override 
     public void onFailure(Throwable t) { 
      // handle execution failures like no internet connectivity 
      Log.d("Error", t.getMessage()); 
     } 
    }); 

donc je pense que le problème commence par scService Interface ..

import java.util.List; 
import retrofit2.Call; 
import retrofit2.Callback; 
import retrofit2.http.GET; 
import retrofit2.http.Query; 
interface SCService { 

@GET("tracks?client_id=" + Config.CLIENT_ID) 
public void getRecentTracks(@Query("created_at[from]") String date, Callback<List<Track>> cb); 
    } 

Voici ma classe Soundcloud ....

import retrofit2.Retrofit; 
    import retrofit2.Retrofit; 
    public class SoundCloud { 
     private static final Retrofit REST_ADAPTER = new Retrofit.Builder().baseUrl(Config.API_URL).build(); 
     private static final SCService SERVICE = REST_ADAPTER.create(SCService.class); 

    public static SCService getService() { 
     return SERVICE; 
    } 

}

Ceci est la classe Config na pas penser qu'il serait nécessaire ...

public class Config { 

public static final String CLIENT_ID = "c85f6828ae5eaf5981937ead09ef1b45"; 
public static final String API_URL = "https://api.soundcloud.com/"; 
} 

J'ai été à ce tout le d ay, Toute aide serait très apprécié ..


+0

vous devez également utiliser un @Query pour client_id et après votre s'il vous plaît Config.API_URL – Fabian

+0

J'ai posté Config. Fichier java - il a le Config.API_URL ... Aussi comment @Query pour client_id? dans la classe d'interface? Je ne comprends pas cela ... – OzmaTis

+0

? Client_id = "+ Config.CLIENT_ID peut être remplacé par @Query (" client_id ") String clientId – Fabian

Répondre

0

Il pourrait être peu de choses, mais très probablement le problème est que le convertisseur Gson ne soit plus automatiquement inscrit retrofit et donc votre code ne sait pas comment vous objectez de Json. C'est à dire. en retrofit2 vous devez vous inscrire comme Gson:

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl("http://api.nuuneoi.com/base/") 
     .addConverterFactory(GsonConverterFactory.create(gson)) 
     .build(); 

Jetez un oeil à cet article: Retrofit 2 changes, Custom Gson Object (in the middle of the page)