【问题标题】:Is this how you build a Uri/Url?这是您构建 Uri/Url 的方式吗?
【发布时间】:2019-03-29 12:02:29
【问题描述】:

我正在尝试使用 uri Builder 构建 URL,并使用来自不同端点的 Volley 从 json 文件中提取数据。我的网址看起来像这样 //http://api.themoviedb.org/3/movie/157336/videos?api_key=###。我不确定我这样做是否正确,因为我收到了错误的请求 400,所以我怀疑我缺少一些东西。

 Intent intent = getIntent();
    String movieId = intent.getStringExtra(Constants.MOVIE_ID);
    Uri.Builder builder = new Uri.Builder();
    builder.scheme("http")
            .authority("api.themoviedb.org/3/movies/")
            .appendPath(movieId)
            .appendPath("videos")
            .appendQueryParameter("api_key", BuildConfig.ApiKey);

    String myUrl = builder.build().toString();

【问题讨论】:

  • 你看过这个答案了吗:stackoverflow.com/a/19168199/4201505 ?
  • @glm9637 是的,我做到了,但我看不出这个例子与我的完全相似。我对附加路径部分感到困惑。
  • 我目前不在我的电脑上检查这个,但我认为你的权限应该是“api.themoviedb.org”,然后你应该附加路径的resto。
  • @glm9637 并包含“搜索”一词?
  • 您希望在哪里包含搜索字词?

标签: java android url uri


【解决方案1】:

您的网址存在多个错误,但只有一个与您构建它的方式有关。 权限应该没有任何路径段,这些应该与附加路径一起添加,因为 / 将被编码并且你以这个 url 结尾: https://api.themoviedb.org%2F3%2Fmovies%2F/157336/videos?api_key=###

所以只要把这部分分成以下几部分:

.authority("api.themoviedb.org")
.appendPath("3")
.appendPath("movies")

还有一些关于 tmdb 的细节 首先,您只能通过 https 调用他们的 api,因此将其设置为方案:

builder.scheme("https")

然后您正在尝试到达未定义的端点,如果您查看https://developers.themoviedb.org/3/movies/get-movie-videos 下的文档,您会注意到您当前正在尝试到达

/movies/{id}/videos

但终点在:

/movie/{id}/videos

所以改变:

.appendPath("movies")

与 .appendPath("电影")

现在,如果您注销 myUrl 变量,您应该会看到以下网址:

https://api.themoviedb.org/3/movie/157336/videos?api_key=###

哪个是正确的。

【讨论】:

  • 抱歉回复晚了,我已经离开了。我已经改了,效果很好,谢谢。再次抱歉,回复晚了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 2019-04-21
  • 1970-01-01
  • 2016-11-16
  • 2010-12-07
  • 1970-01-01
  • 2021-12-17
相关资源
最近更新 更多