我正在评估这里的地方API。但是,url确实返回网页而不是普通的JSON作为响应。示例查询:
https://places.cit.api.here.com/places/v1/autosuggest?app_id={YOUR_APP_ID}&app_code{YOUR_APP_CODE}&at=52.5304417,13.4111201&q=rest&pretty
我需要将响应视为简单的JSON,但无法在documentation page上找到任何信息。
答案 0 :(得分:1)
答案是将回调参数添加到网址。例如:
https://places.cit.api.here.com/places/v1/autosuggest?app_id={YOUR_APP_ID}&app_code{YOUR_APP_CODE}&at=52.5304417,13.4111201&q=rest&pretty&callback=xyz
文件中不清楚。我从HERE支持处获得了这些信息。
答案 1 :(得分:1)
这是因为您在浏览器地址栏中尝试了请求,在这种情况下,浏览器会自动将Accept: text/html
添加到请求标题中。
然后,因为Places API有一些Web助手工具可以使用可用参数,所以它会返回html(Web UI),因为在请求标题中找到了Accept: text/html
。
添加callback
的解决方案更像是一种解决方法,因为它使用回调参数的值包装响应。
您的初始请求实际上是有效的。如果你从你的程序或者像Postman这样的REST客户端而不是从浏览器发送它,你实际上默认获得了JSON,所以没有其他事可做。当然,您可以明确地发送标题Accept: application/json
以保证安全。
[1]打开浏览器开发人员工具的网络面板,查看发送的内容。
答案 2 :(得分:0)
您必须设置Accept
标头,以便服务以JSON响应。
请参阅文档here中的示例:
curl \
-X GET \
-H 'Accept: application/json' \
--get 'https://places.demo.api.here.com/places/v1/discover/search' \
--data-urlencode 'at=37.7942,-122.4070' \
--data-urlencode 'q=restaurant' \
--data-urlencode 'app_id={YOUR_APP_ID}' \
--data-urlencode 'app_code={YOUR_APP_CODE}'