- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Retrofit 调用有疑问。我想获取一些数据,只是为了测试目的,看看是否有任何结果,但如您所见,没有任何结果。我得到了 0、0.0、null 之类的数据。
JSON 响应
{
"page": 1,
"total_results": 1295,
"total_pages": 65,
"results": [
{
"vote_count": 1669,
"id": 10515,
"video": false,
"vote_average": 8,
"title": "Castle in the Sky",
"popularity": 15.853,
"poster_path": "\/npOnzAbLh6VOIu3naU5QaEcTepo.jpg",
"original_language": "ja",
"original_title": "天空の城ラピュタ",
"genre_ids": [
12,
14,
16,
28,
10751,
10749
],
"backdrop_path": "\/fnMzL4G6HYilH1w1leFXOY5b29m.jpg",
"adult": false,
"overview": "A young boy and a girl with a magic crystal must race against pirates and foreign agents in a search for a legendary floating castle.",
"release_date": "1986-08-02"
},
{
"vote_count": 154,
"id": 487672,
"video": false,
"vote_average": 6.7,
"title": "Reign of the Supermen",
"popularity": 15.461,
"poster_path": "\/e9TzqscNRUaG8HqEP3K1jUvi8pC.jpg",
"original_language": "en",
"original_title": "Reign of the Supermen",
"genre_ids": [
16,
28,
878
],
"backdrop_path": "\/cdCMUHWyXBOsbLL4dOEPdCEtwM4.jpg",
"adult": false,
"overview": "In the wake of The Death of Superman, the world is still mourning the loss of the Man of Steel following his fatal battle with the monster Doomsday. However, no sooner as his body been laid to rest than do four new bearers of the Superman shield come forward to take on the mantle. The Last Son of Krypton, Superboy, Steel, and the Cyborg Superman all attempt to fill the vacuum left by the world's greatest champion. Meanwhile, Superman's death has also signaled to the universe that Earth is vulnerable. Can these new Supermen and the rest of the heroes prove them wrong?",
"release_date": "2019-01-13"
}
]
}
接口(interface)调用
@GET("3/discover/movie?api_key=APIKEY&with_genres=27")
Call<model> getABC();
retrofit 电话
String url = "https://api.themoviedb.org/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.build();
apiCall api = retrofit.create(apiCall.class);
Call<model> call = api.getABC();
call.enqueue(new Callback<model>() {
@Override
public void onResponse(Call<model> call, Response<model> response) {
if (!response.isSuccessful()){
}
List<model> list = Collections.singletonList(response.body());
for (model model : list) {
String content = "";
content += model.getVote_count() + "\n";
content += model.getVote_average() + "\n";
content += model.getOverview() + "\n\n\n";
System.out.println(content);
}
}
@Override
public void onFailure(Call<model> call, Throwable t) {
}
});
}
POJO
public class model {
@SerializedName("vote_count")
private int vote_count;
@SerializedName("vote_average")
private double vote_average;
@SerializedName("overview")
private String overview;
public int getVote_count() {
return vote_count;
}
public double getVote_average() {
return vote_average;
}
public String getOverview() {
return overview;
}
我应该在代码中更改什么?我会感激每一个提示。我从通话中收到的代码是 200 - 所以通话成功,我的 pojo 类有问题吗?
*已编辑的 POJO
public class model {
@SerializedName("results")
@Expose
private List<movies> results;
public List<movies> getResults() {
return results;
}
class movies {
@SerializedName("vote_count")
@Expose
private Integer voteCount;
@SerializedName("vote_average")
@Expose
private Double voteAverage;
@SerializedName("overview")
@Expose
private String overview;
}
}
编辑后的 retrofit 电话
public void onResponse(Call<model> call, Response<model> response) {
if (!response.isSuccessful()){
}
List<model> list = Collections.singletonList(response.body());
for (model model : list) {
System.out.println(model.getResults());
}
}
这是我收到的部分。
com.example.x.model$movies@5f6763b,
com.example.x.model$movies@e988158,
com.example.x.model$movies@6812b1,
为什么它没有得到正确的名字?
最佳答案
您的模型类应如下所示:
public class Model {
@SerializedName("page")
private int page;
@SerializedName("results")
private List<Result> results;
@SerializedName("total_results")
private int total;
@SerializedName("total_pages")
private int totalPages;
//.......getter setter methods
}
public class Result{
@SerializedName("vote_count")
private int voteCount;
@SerializedName("vote_average")
private double voteAverage;
@SerializedName("overview")
private String overView;
//.....other fields
//......getter setter methods
}
那么改造调用应该是这样的:
Call<model> call = api.getABC();
call.enqueue(new Callback<Model>() {
@Override
public void onResponse(Call<Model> call, Response<Model> response) {
if (response.isSuccessful()) {
List<Result> results=response.body().getResults();
for(Result result:results){
Log.d(TAG,"Result: "+result.getVoteCount())
}
}
}
@Override
public void onFailure(Call<Model> call, Throwable t) {
}
});
快乐编码.... :)
关于java - 没有从 Retrofit 获得任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520726/
我正在尝试迁移我的应用程序以使用 RxJava。我已经在使用 Retrofit,因此我正在尝试使用方法返回 Observables 的 Retrofit 接口(interface)。但是我现在在针对它
我想 post 数据如下: { "user_id":"14545646", "list":["4545645","4545645","4545645","4545645"]
我是改造新手。我向网站发出 POST 请求。网站以 HTML 形式返回响应。所以我会解析它。但是 Retrofit 尝试将其解析为 JSON。怎么办? @FormUrlEncoded @POST("/
我想异步执行 2 个网络调用 - 我正在使用 Retrofit+RxJava 来完成这个。这个逻辑来自一个简单的 Runner 类来测试解决方案。注意:这主要涉及服务器端的 RxJava。 我的代码如
我最近在改造的存储库中使用 Flow。 Result 的密封类 enum class ApiStatus{ SUCCESS, ERROR, LOADING } sealed c
我目前正在开发 Retrofit2 客户端的错误处理部分(使用 Retrofit 的 Rx 实现)。 找了一段时间,没有找到简单的方法将Retrofit返回的ResponseBody反序列化到我报错的
我从 retrofit 更新到 retrofit2 后出现此错误。 FATAL EXCEPTION: OkHttp Dispatcher Process: nz.co.datacom.mars.jun
在使用 RxJava 和 Retrofit 2 时,我正在尝试创建单元测试来覆盖我的应用何时收到特定响应。 我遇到的问题是,在 Retrofit 2 中,我看不到在不使用反射的情况下创建 retrof
在 Retrofit 1.9.x 中有一个 RetrofitError.Kind.NETWORK这让您可以轻松确定故障是否由网络错误引起。在新的 2.0 API 中,我们不再有 RetrofitErr
有没有办法用Refit动态输入参数? 我的 Refit 界面中有这段代码: [Get("/click?{parm}")] Task> SaveClick(string parm
有没有办法用Refit动态输入参数? 我的 Refit 界面中有这段代码: [Get("/click?{parm}")] Task> SaveClick(string parm
我知道,Retrofit 在内部使用 OkHttp。但是,我可以看到一些开发人员提供了以下方法的应用 return new Retrofit.Builder() .baseUrl(Bu
在项目上安装这个库之后: compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.0
在 Retrofit 1.x 中,我使用以下模式创建 API 服务类,该类模拟某些构建变体的不良网络连接。 // Retrofit 1 private T create(Class apiServi
Retrofit请求API格式(Android): @POST("getOrderStatus") @Headers("Content-Type:application/json") Obser
当我实例化 RestAdapter 时,我的应用程序总是崩溃 private void submitForm(SignupForm form){ RestAdapter adapter = n
我正要从 retrofit 1.9 迁移到最新版本并遇到问题... 我的设置: 三星 Galaxy S7 Edge(Android 7) 改造 2.3 OkHttp 3.8 迁移后突然遇到这个问题:
我正在尝试在 2.5.1-SNAPSHOT 中使用 retrofit 的协程支持,但我不断收到一个奇怪的异常。 我的改造服务类有: @GET("weather") suspend fun getFor
我正在尝试 Ktor通过转换一些当前正在使用的现有项目 Retrofit . 虽然我可以很容易地将请求转换为: client.get { url("$BASE_URL/something/so
使用改造 2,如何为上传的文件设置动态名称? 目前是这样的: @Part("avatar\"; filename=\"image\" ") RequestBody image, 但是,上传的文件名将是
我是一名优秀的程序员,十分优秀!