我正在使用 tmdb api 服务构建 android (java)netflix 克隆

问题描述 投票:0回答:2

我遇到了一个问题,当我调用 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 android api retrofit
2个回答
0
投票

我猜你没有在服务器上运行你的代码,请制作你的java应用程序的jar文件,然后在任何服务器或本地机器上运行这个jar代码,现在尝试使用正在运行的服务器的主机在android应用程序中调用这个api。


0
投票

我可以看到你的服务器类。 我猜你没有在那里传递 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)
}

我希望这会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.