0

我正在尝试使用 node.js 发送 http 请求并调用百度地图 API。我的代码:

如果您通过 url 并直接使用浏览器,它将以正确的格式给出正确的响应。

但是当我使用节点发送请求时,我遇到了问题。

var request = require('request');
  request(
    { method: 'GET',
      uri: 'http://api.map.baidu.com/place/v2/suggestion?query=beijing&region=131&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah'
    }
  , function (error, response, body) {

      res.json({
        res:response
      })
    }
  )

同时,如果我更改网址包含一些中文,例如:

http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学&region=北京&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah

在 node.js 中,它会给出状态码 400 和完全错误的响应。

4

1 回答 1

2

您必须使用encodeURI对您的 uri 进行编码

uri: encodeURI('http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学&region=北京&output=json&ak=3104hLQKu9ap9fPq5N1ExF1Kk7xe5Eah')
于 2016-05-21T14:00:33.323 回答