我创建了以下简单的测试来查询 iTunes:
@Test
fun loadArtist()
{
val restTemplate = RestTemplate()
val builder = UriComponentsBuilder.fromHttpUrl("https://itunes.apple.com/search")
builder.queryParam("term", "howling wolf")
builder.queryParam("entity", "allArtist")
builder.queryParam("limit", 1)
println("\n\nURL ${builder.toUriString()}")
val result = restTemplate.getForObject(builder.toUriString(), String::class.java);
println("Got artist: $result")
}
输出出乎意料:
URL https://itunes.apple.com/search?term=howling%20wolf&entity=allArtist&limit=1
Got artist:
{
"resultCount":0,
"results": []
}
将生成的 URL 粘贴到浏览器中确实会产生预期的结果 - 艺术家返回。
https://itunes.apple.com/search?term=howling%20wolf&entity=allArtist&limit=1
此外,对查询进行硬编码也可以:
val result = restTemplate.getForObject("https://itunes.apple.com/search?term=howling%20wolf&entity=allArtist&limit=1", String::class.java);
. . 该问题似乎只发生在term
包含空格的查询中。
什么地方出了错?除了手动组装 URL,如何修复?