我遇到了一个问题,当我调用 api 时,它在我的应用程序中给出 null,但与邮递员一起工作正常,下面是我的 model.wrapper 和 viewmodel 类,我正在使用改造进行 api 调用
公开课剧集回应{
private List<Episodemodel> episodes;
public List<Episodemodel> getEpisodes() {
return episodes;
}
}
上面是剧集包装类
剧集模型类
public class Episodemodel {
@SerializedName("episode_number")
int epino;
@SerializedName("name")
String name;
@SerializedName("overview")
String overview;
@SerializedName("still_path")
String image;
public int getEpino() {
return epino;
}
public void setEpino(int epino) {
this.epino = epino;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOverview() {
return overview;
}
public void setOverview(String overview) {
this.overview = overview;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
} 这是viewmodel类代码
public void fetchEpisodes(int id) {
Call<Episodesresponse>call = movieapiservice.getEpisodes();
call.enqueue(new Callback<Episodesresponse>() {
public void onResponse(Call<Episodesresponse>call, Response<Episodesresponse> response) {
if (response.isSuccessful()) {
Episodesresponse data = response.body();
List<Episodemodel> datalist=data.getEpisodes();
if(data.getEpisodes()==null)
Log.e("#","Episode under sucessful-->" + "null");
}
Log.e("#","Episode under response");
}
@Override
public void onFailure(Call<Episodesresponse> call, Throwable t) {
Log.e("#","Episode under failure "+ t.getMessage());
}
});
}
服务等级
@Headers({"Authorization: Bearer "+Apikey.skey, "accept: application/json"})
@GET("tv/1399?api_key=itskeythere&append_to_response=season/2")
Call<Episodesresponse> getEpisodes();
json 示例
{
"_id": "5256c89f19c2956ff6046d47",
"air_date": "2011-04-17",
"episodes": [
{
"episode_number": 1,
"name": "Episode 1",
"overview": "This is the first episode.",
"still_path": "path/to/image.jpg"
},
{
"episode_number": 2,
"name": "Episode 2",
"overview": "This is the second episode.",
"still_path": "path/to/image.jpg"
}
]
}
我猜你没有在服务器上运行你的代码,请制作你的java应用程序的jar文件,然后在任何服务器或本地机器上运行这个jar代码,现在尝试使用正在运行的服务器的主机在android应用程序中调用这个api。
我可以看到你的服务器类。 我猜你没有在那里传递 API 密钥,请检查一下。使用查询参数传递您的密钥。 使用下面的代码来传递你的API密钥:
@Headers({"Authorization: Bearer "+Apikey.skey, "accept: application/json"})
@GET("tv/1399?api_key={apiKey}&append_to_response=season/2")
Call<Episodesresponse> getEpisodes((@Path("apiKey") String apiKey);
或者您可以使用 @Query("key") 字符串值来传递查询参数。
示例:
public interface IService {
String BASE_URL = "https://api.test.com/";
String API_KEY = "SFSDF24242353434";
@GET("Search") //i.e https://api.test.com/Search?
Call<Products> getProducts(@Query("one") String one, @Query("two") String two,
@Query("key") String key)
}
我希望这会起作用。