我正在尝试调试一些API调用,我想确认我发送了我认为我发送的内容。
var req = https.request(request, function(res) {
var body;
res.setEncoding('utf8');
body = "";
res.on('data', function(chunk) {
return body += chunk;
});
res.on('end', function() {
if (res.statusCode === 200) {
return settings.success(null, JSON.parse(body), res);
} else {
return settings.error(body, null, res);
}
});
return res.on('error', function() {
return settings.error(null, Array.prototype.slice.apply(arguments), res);
});
});
if (settings.data != null) {
req.write(settings.data);
}
// check body of req here
settings.data
是一个protobuf缓冲区。我想查看最终的书面正文,因为通话中的某个地方有一个错误,我想看看我发送的是什么。有人可以帮忙吗?
答案 0 :(得分:0)
编辑:我误解了原来的问题。要检查您发送的内容,您可以使用util.inspect(settings.data)
返回显示该变量或使用console.dir(settings.data)
的内容的字符串以显示该字符串隐式地用于stdout(console.dir()
在幕后使用util.inspect()
。
原始回答:
我认为协议缓冲区是 binary ,但是您要将所有数据转换为utf8字符串。您可以尝试将其全部保留为二进制文件:
var body = [], nb = 0;
res.on('data', function(chunk) {
body.push(chunk);
nb += chunk.length;
});
res.on('end', function() {
body = Buffer.concat(body, nb);
// now `body` contains all protocol buffer data in the original binary format
});
如果您想要获得缓冲区中内容的文本表示,可以使用util.inspect()
。例如:
var inspect = require('util').inspect;
// ...
res.on('end', function() {
body = Buffer.concat(body, nb);
if (res.statusCode === 200)
settings.success(null, inspect(body), res);
else
settings.error(body, null, res);
});