2016-07-11 39 views
0

我在node.js中写入了一个GET rest调用。我的邮件调用工作正常,但是当我使用get调用时,我看不到Json格式的输出。事实上,我看到一些特殊字符的输出。请告诉我哪里出错了。GET Node.js中的其余调用在JSON中不显示输出

var http = require('http'); 
var requestrespone = require("request"); 
var config = require('../config/config.js'); 
var jsonFile = require('jsonfile'); 
var jsonFile=require('../json_input/jsoninput.json'); 
var cheerio =require('cheerio'); 
var express=require('express'); 
var app=express(); 
var postOptions = { 
    host : config.host, 
    method : config.post, 
    path: config.path, 
    headers :config.postheader 
}; 


    var getOptions= 
    { 
     host : config.host, 
     method : config.get, 
     path: config.getpath, 
     headers :config.getheader 

    }; 



jsonObject = JSON.stringify(jsonFile); 


console.info('Options prepared:'); 
console.info(postOptions); 
console.info('Starting the POST call'); 


var jsonString; 
function mapFeedbackIdGeneration(done) 
{ 

    var reqPost = http.request(postOptions, function(res) { 
    console.log("statusCode: ", res.statusCode); 
    res.on('data', function(data) { 
    jsonString=JSON.parse(data); 
    return done(jsonString); 
     }); 

    res.on('close', function() { 
    }); 
}); 


reqPost.write(jsonObject); 
reqPost.end(); 
reqPost.on('error', function(e) { 
console.error(e); 
});} 
///----------GET CALL----------------->>>>> 
console.info('Options prepared:'); 
console.info(getOptions); 

console.info('Do the GET call'); 

var options = { 
    "method": "GET", 
    "hostname": "maphub.cit.api.here.com", 

    "path": "/feedback/-936624", 
    "headers": { 

    'Accept-Encoding':'gzip,deflate', 
    'Authorization':'AWS O7Qx6dyYEnwwBT2Hn5Es:gR/rjtlGsggWEZ1ItPOw0oGXdPM=', 

'Auth-Identifier':'Y-7Wnc2lNk3fMI0n3-rZ', 

'Auth-Service-Id':'here_app', 
'Group-Id':'FGx1AWaAzKOo0imNkLmf', 
'Auth-Secret':'mEv_DZ1JKDDYzESUAp9KyQ', 
'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0', 

'Host':'maphub.cit.api.here.com' 


} 
}; 

var req = http.request(options, function (res) { 
    var chunks = []; 

    res.on("data", function (chunk) { 
     console.log("chunks data"); 
     console.log(chunks); 
    chunks.push(chunk); 
    }); 

    res.on("end", function() { 
    var body = Buffer.concat(chunks); 
    console.log("hello"+body); 
    }); 
}); 

req.end(); 
module.exports.mapFeedbackIdGeneration=mapFeedbackIdGeneration; 

//module.exports.getMapfeedback=getMapfeedback; 

我的输出应该是JSON数据,但它表明:

Do the GET call 
chunks data 
[] 
hello▼  T?AO?0►????8?‼?"?*??j↨[email protected]=L?i?%???¶§?⌂?I`w?↨?~??,???  ?.♀???,? 
ZV?{[email protected]?Q↕[?F?}WCg?Y☼↨L?1??^?p??=?m?{?>?????▼?????l^P↨?JQTUSs????T<?????f??K1Su? 
?4??KQ?? 
)UiA 
"?X(D?PKA‼G????????KD?????j>X?p?`??%$ ?▼^! 
?i/!b?n??`?!∟???=?4g?B?????j?yXln?[??)?D▲[email protected]?¶[N?4F}u  ??]?d\=?n?{▲3??n 
►???♥??7?‼?♂??\G?S$?♠2YF{?♥>n??5m?▼???/? ??q?y}??>)??????♫??\????7 ??♥ ☼??↑☻ 

statusCode: 200 

我要去哪里错了?

+0

尝试从获取选项中删除''Accept-Encoding':'gzip,deflate'。 –

回答

3

您的代码存在问题。在options变量中删除以下内容。

'Accept-Encoding':'gzip,deflate', 

上面行告诉客户可以接受gzip压缩文件,可以解压远程服务器。但是,您的应用程序不会执行解压缩部分。因此,你看到的是乱码数据。

相关问题