使用themoviedb获取401并进行改造

时间:2019-06-14 06:18:32

标签: java android retrofit themoviedb-api

所以我想用动态请求进行API调用,但是首先,我创建了“ raw”调用,并进行了硬编码。因此,该地址在网络浏览器中可以正常工作

https://api.themoviedb.org/3/discover/movie?api_key=API_KEY&with_genres=27

这是原始API调用(也可以正常工作)

 @GET("3/discover/movie?api_key=API_KEY&with_genres=27") Call<itemList_model> getHorror();

问题是当我尝试使流派变为动态查询时。我收到此错误401,不知道为什么。

 @GET("3/discover/movie") Call<itemList_model> test(@Query("API_KEY") String key, @Query("with_genres") String[] id); (there's no difference, if I use the array or not, still getting 401)

改造电话

   public void getListViewItems() {
     String url = "https://api.themoviedb.org/";
     Retrofit retrofit = new Retrofit.Builder()
           .baseUrl(url)
          .addConverterFactory(GsonConverterFactory.create())
          .build();
     apiCall api = retrofit.create(apiCall.class);
    Call<itemList_model> call = api.test("999ac32d244814bb3415d26876085144", "27");
      call.enqueue(new Callback<itemList_model>() {
     @Override
    public void onResponse(Call<itemList_model> call, Response<itemList_model> response) {
          if (!response.isSuccessful()) {
            Log.i(TAG, "onResponse: " + response.code());
          }
          Log.i(TAG, "onResponse: "+response.code());
      }
       @Override
       public void onFailure(Call<itemList_model> call, Throwable t) {
           Log.i(TAG, "onFailure: " + t.getMessage());
      }
  });
 }
  

*错误401:身份验证失败:您​​无权访问该服务。

1 个答案:

答案 0 :(得分:2)

您需要进行如下更改

API_KEY更改为api_key,因为您的网址密钥是api_key

@GET("3/discover/movie") Call<itemList_model> test(@Query("api_key") String key, @Query("with_genres") String[] id);