【发布时间】:2017-12-23 04:55:54
【问题描述】:
我想显示来自 JSON 值的文本。我正在使用Retrofit 拨打API 电话我不知道我是否做得对。无论如何,这是我的代码。
这是网址链接:http://api.icndb.com/jokes/random。
网站每次都会随机显示一个笑话。以下是网站输出的示例:
{ "type": "success", "value": { "id": 175, "joke": "When Chuck Norris was a baby, he didn't suck his mother's breast. His mother served him whiskey, straight out of the bottle.", "categories": [] } }
fragment.java
String url = "http://api.icndb.com/";
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
RetroFitHelper client = retrofit.create(RetroFitHelper.class);
Call<Api> call = client.findJoke("random");
call.enqueue(new Callback<Api>() {
@Override
public void onResponse(Response<Api> response, Retrofit retrofit) {
String result = response.body().getJoke();
Toast.makeText(getContext()," The word is: " + result ,Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Throwable t) {
Toast.makeText(getContext()," Error..." ,Toast.LENGTH_LONG).show();
}
});
RetroFitHelper.java
public interface RetroFitHelper {
@GET("/jokes/{random}")
Call<Api> findJoke(@Path("random") String random);
}
模型类
public class Api {
@SerializedName("joke")
private String joke;
public String getJoke() {
return joke;
}
public void setJoke(String joke){
this.joke = joke;
}
}
【问题讨论】:
-
确保您已在清单中添加 INTERNET 权限
-
谢谢,但它已经启用了。
-
看起来您的模型类不太正确。看看 Navaneet 的回答