2016-05-21 26 views
0

Ich versuche, node.js zu verwenden, um HTTP-Request zu senden und Baidu-Map-API aufzurufen. mein Code in Schlag:Verwenden Sie node.js senden Anfrage für Baidu Karte API bekommen falsche Antwort?

Wenn Sie die URL vorbei und Browser direkt verwenden, wird es richtige Antwort im richtigen Format geben.

Aber wenn ich Knoten zum Senden von Anfrage verwende, bekomme ich ein Problem.

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 
     }) 
    } 
) 

Inzwischen, wenn ich die URL enthält einige chinesische ändern mögen:

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

In node.js wird es Statuscode 400 und völlig falsche Antwort geben.

Antwort

2

müssen Sie uri kodieren mit encodeURI

uri: encodeURI('http://api.map.baidu.com/place/v2/suggestion?query=北京理工大学&region=北京&output=json&ak=3104hLQKu9ap9fPq5N1ExF1Kk7xe5Eah') 
+0

ja es funktioniert, und müssen Set json: true –