改造不是打电话给api

时间:2016-06-23 08:53:47

标签: android retrofit retrofit2

我正在使用改装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中设置了互联网权限。

2 个答案:

答案 0 :(得分:0)

您可以尝试将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/服务

答案 1 :(得分:0)

我认为您正在实施错误的onResponse()Callback(),因为我也在使用Retrofit 2,onResponse()看起来像这样:

@Override
public void onResponse(Response<ListJsonResponseRestaurant> response, Retrofit retrofit) {
    ...
    ...
}