node.js 发送 带有中文的http request出错,如何解决?

发布于 2022-09-02 16:03:23 字数 1192 浏览 22 评论 0

我想用node去调用百度地图的api,通过url的方式。但是url里面有中文,如果直接把url用浏览器打开,会得到正确的结果(在这里我隐藏了我百度的key),不过在node里面使用request就不能得到正确的结果,我猜是url的encode有问题,查询过后解决不了。

感谢~

 
  var request = require('request');
  request(
    { method: 'GET',
      header : {'Content-Type' : 'application/json; charset=UTF-8'},
      uri: 'http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学&region=全国&output=json&ak=****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah'
      //uri:'http://www.baidu.com'
    }
  , function (error, response, body) {
      // if(response.statusCode == 201){
      //   console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)
      // } else {
      //   console.log('error: '+ response.statusCode)
      //   console.log(body)
      // }
      res.json({
        res:response
      })
    }
  )

使用windwhinny的答案过后,有值返回了,但是格式我看不懂,看起来还是有点像json但是格式有点问题:

clipboard.png

正确的返回值如下:

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幽蝶幻影 2022-09-09 16:03:23
var request = require('request');
var URL = require('url');

  request(
    { method: 'GET',
      header : {'Content-Type' : 'application/json; charset=UTF-8'},
      uri: URL.format({
          protocol: 'http',
          host: 'api.map.baidu.com',
          pathname: '/place/v2/suggestion',
          query: {
              query: '北京理工大学',
              region: '全国',
              output: 'json',
              ak: '****hLQKu9ap9fPq5N1ExF1Kk7xe5Eah',
          }
      }),
      // 加上这一句,request 会自动将返回值解析为 json object
      json: true,
      //uri:'http://www.baidu.com'
    }
  , function (error, response, body) {
      // if(response.statusCode == 201){
      //   console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)
      // } else {
      //   console.log('error: '+ response.statusCode)
      //   console.log(body)
      // }
      res.json({
        res:response
      })
    }
  )

如果想对单个字符串转码,就用 encodeURIComponent 这个方法。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文