使用node.js 发送百度地图请求API 收到错误响应?
use node.js send request for baidu map API get wrong response?
我正在尝试使用 node.js 发送 http 请求并调用百度地图 API。
我的代码:
如果您跳过 url 并直接使用浏览器,它将以正确的格式给出正确的响应。
但是当我使用节点发送请求时,我遇到了问题。
var request = require('request');
request(
{ method: 'GET',
uri: 'http://api.map.baidu.com/place/v2/suggestion?query=beijing®ion=131&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah'
}
, function (error, response, body) {
res.json({
res:response
})
}
)
与此同时,如果我更改 url 包含一些中文,例如:
http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学®ion=北京&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah
在node.js中它会给出状态码400和完全错误的响应。
您必须使用 encodeURI
对您的 uri 进行编码
uri: encodeURI('http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学®ion=北京&output=json&ak=3104hLQKu9ap9fPq5N1ExF1Kk7xe5Eah')
我正在尝试使用 node.js 发送 http 请求并调用百度地图 API。 我的代码:
如果您跳过 url 并直接使用浏览器,它将以正确的格式给出正确的响应。
但是当我使用节点发送请求时,我遇到了问题。
var request = require('request');
request(
{ method: 'GET',
uri: 'http://api.map.baidu.com/place/v2/suggestion?query=beijing®ion=131&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah'
}
, function (error, response, body) {
res.json({
res:response
})
}
)
与此同时,如果我更改 url 包含一些中文,例如:
http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学®ion=北京&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah
在node.js中它会给出状态码400和完全错误的响应。
您必须使用 encodeURI
对您的 uri 进行编码uri: encodeURI('http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学®ion=北京&output=json&ak=3104hLQKu9ap9fPq5N1ExF1Kk7xe5Eah')