1

Android Studio IDE を使用してこのチュートリアルを行っています。

私が抱えている問題は、チュートリアルが gson の古いライブラリとレトロフィット 1.8.0 で行われたことです...

解決できないように見えるこのエラーに遭遇するまで、私は retrofit2.0-beta3 をうまくフォローしていました..

ここに画像の説明を入力

それはこの行と関係があります...(この行はonCreate()の下の私のMainActivity.Javaにあります)

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());
       }
   });

だから私は問題がscServiceインターフェースから始まると思う..

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);
     }

これが私の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;
   }

}

これは、必要になるとは思わなかった Config クラスです...

public class Config {

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

私は一日中これにいました、どんな助けでも大歓迎です..


4

1 に答える 1

0

いくつかのことかもしれませんが、おそらく問題は、Gson コンバーターがレトロフィットで自動的に登録されなくなったため、コードが Json からオブジェクトを取得する方法を認識していないことです。つまり、retrofit2 では、次のように Gson を登録する必要があります。

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

この記事をご覧ください: Retrofit 2 の変更、カスタム Gson オブジェクト (ページの中央)

于 2016-01-28T15:56:27.520 に答える