Модернизация не вызывает API

Я использую модификацию 2, чтобы сделать вызов API на мой сервер, но он зависает при попытке сделать вызов API. это мой код

public interface GOTApi {


    @GET("characters.json")
    Call<GOTCharacterResponse> getCharacters();

}

Промежуточный класс для получения данных

public class GOTCharacterResponse {

    List<GOTCharacter> characters;
}

Мой класс для вызова API

public class GOTService {

    public static final String BASE_URL = "https://project-8424324399725905479.firebaseio.com/";

    public static GOTApi getGOTApi(){

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

        return retrofit.create(GOTApi.class);

    }


    public static void getCharacters(){

        getGOTApi().getCharacters().enqueue(new Callback<GOTCharacterResponse>() {
            @Override
            public void onResponse(Call<GOTCharacterResponse> call, Response<GOTCharacterResponse> response) {

                if(response.isSuccessful()){

                }

            }

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


                int a = 0;
            }
        });

    }

    }

Это библиотеки, которые я использую

compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
compile 'com.squareup.okhttp3:okhttp:3.3.1'

Он всегда застревает в методе getCharacters(). Конечно, у меня есть разрешение на доступ в Интернет, установленное в Mainfest.


person aloj    schedule 23.06.2016    source источник
comment
Что значит застрять? Крушение? или?   -  person Tim    schedule 23.06.2016
comment
Нет, не крашится, просто процесс не продолжается, я не вижу никаких предупреждений или ошибок в logcat   -  person aloj    schedule 23.06.2016
comment
@aloj ты решил свою проблему? я сталкиваюсь с похожей проблемой   -  person Tejas Pandya    schedule 20.03.2018


Ответы (2)


Вы можете попробовать использовать Retrofit2 с RxJava, это более удобно.

public Retrofit providedRetrofit(OkHttpClient okHttpClient){
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();
    return retrofit;
}

Интерфейс вашего API будет выглядеть так

public interface Api {
    @GET("api/service/schedule/{filial}")
    Observable<Response<GOTCharacter>>   getSchedule(@Path("some_param")  String param);
}

Вам также необходимо проанализировать ответ из JSON. Вы не предоставили класс GOTCharacter, но вы можете создать код из ответа json, используя http://www.jsonschema2pojo.org/ служба

person Alex Shutov    schedule 23.06.2016
comment
RxJava действительно может быть удобным в некоторых случаях, но я не понимаю, как добавление поддержки RxJava спасет проблему OP. - person Egor; 23.06.2016

Я думаю, что вы реализуете неправильный onResponse() ИЛИ Callback(), потому что я тоже использую Retrofit 2, в котором onResponse() выглядит так:

@Override
public void onResponse(Response<ListJsonResponseRestaurant> response, Retrofit retrofit) {
    ...
    ...
}
person kashyap jimuliya    schedule 23.06.2016