我写的Retrofit代码如下,请告诉我我做错了什么。 也有人可以告诉我为什么我们应该在哪种情况下使用RxJava以及它如何比Android支持的Volley更有用?
活动
mService.getAnswers().enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
if(response.isSuccessful()) {
// mAdapter.updateAnswers(response.body().getItems());
Log.d("MainActivity", "posts loaded from API");
}else {
int statusCode = response.code();
// handle request errors depending on status code
}
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
// showErrorMessage();
Toast.makeText(getApplicationContext(), "Unable to create post" , Toast.LENGTH_LONG).show();
Log.e("RETROFIT",t.toString());
Log.d("MainActivity", "error loading from API");
}
});
接口
public interface SOService {
@GET("/topstories.json")
Call<JsonObject> getAnswers();
}
和Util是
public class ApiUtils {
public static final String BASE_URL = "https://hacker-news.firebaseio.com/v0/";
public static SOService getSOService() {
return RetrofitClient.getClient(BASE_URL).create(SOService.class);
}
}
答案 0 :(得分:1)
首先从SoService中移除JsonObject
,然后在每个位置将JsonArray
更改为public interface SOService {
@GET("topstories.json")
Call<JsonArray> getAnswers();
}
,以便更改代码后如此
接口
mService.getAnswers().enqueue(new Callback<JsonArray>() {
@Override
public void onResponse(Call<JsonArray> call, Response<JsonArray> response) {
if(response.isSuccessful()) {
// mAdapter.updateAnswers(response.body().getItems());
Log.d("MainActivity", "posts loaded from API");
}else {
int statusCode = response.code();
// handle request errors depending on status code
}
}
@Override
public void onFailure(Call<JsonArray> call, Throwable t) {
// showErrorMessage();
Toast.makeText(getApplicationContext(), "Unable to create post" , Toast.LENGTH_LONG).show();
Log.e("RETROFIT",t.toString());
Log.d("MainActivity", "error loading from API");
}
});
活动
com.google.gson.JsonArray
注意:导入org.json
而不是extern int posix_spawn (pid_t *__restrict __pid,
const char *__restrict __path,
const posix_spawn_file_actions_t *__restrict
__file_actions,
const posix_spawnattr_t *__restrict __attrp,
char *const __argv[__restrict_arr],
char *const __envp[__restrict_arr]);