我想實現基本的練習Retrofits顯示:對github API進行簡單的查詢。我試圖得到一個Repository的列表,但是雖然結果的狀態是200,但是它的主體是空的。 github上有一些門票抱怨同樣的問題,它看起來可能來自json轉換器。我使用gson。但我無法發現它的代碼是罪魁禍首...Retrofit 2返回null body
這裏是我的依賴關係:
dependencies {
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
存儲庫POJO:
public class Repository {
private int id;
private String name;
private String full_name;
private String html_url;
// getters + setters + toString
}
客戶端接口:
public interface GithubClient {
public static final String ENDPOINT = "https://api.github.com";
@GET("https://stackoverflow.com/users/{user}/repos")
Call<List<Repository>> getByUser(@Path("user") String user);
@GET("/search/repositories")
Call<List<Repository>> getByKeywords(@Query("q") String q);
}
它是如何初始化:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(GithubClient.ENDPOINT)
.addConverterFactory(GsonConverterFactory.create())
.build();
githubClient = retrofit.create(GithubClient.class);
而且要求執行:
Call<List<Repository>> request = githubClient.getByUser(inputText);
request.enqueue(new Callback<List<Repository>>() {
@Override
public void onResponse(Call<List<Repository>> call, Response<List<Repository>> response) {
progress.setVisibility(View.GONE);
results.setText(response.toString());
}
@Override
public void onFailure(Call<List<Repository>> call, Throwable t) {
progress.setVisibility(View.GONE);
results.setText(t.getMessage());
}
});
你嘗試使用註釋@expose和@您的POJO – SAM
上的SerializedName(「field_name」)是否使用github v3 apis? Everting從你的結局看起來不錯 –