gpt4 book ai didi

javascript - 为什么 Node.js 无法正确解析以下页面?

转载 作者:行者123 更新时间:2023-12-02 17:13:55 27 4
gpt4 key购买 nike

如果我访问以下页面(我知道凭据无效):

https://apis.live.net/v5.0/me/contacts?access_token=dummy_token

在浏览器中我得到了格式良好的 JSON:

{
"error": {
"code": "request_token_invalid",
"message": "The access token isn't valid."
}
}

但是,如果我尝试做相当于 Node.js 的事情

    var request = require('https').request({

host: 'apis.live.net',
port: 443,
path: '/v5.0/me/contacts?access_token=' + 'dummy',
method: 'GET'
},

function (httpsres) {
var contacts = '';
httpsres.on('data', function (result) {
contacts += result;
});

httpsres.on('end', function () {
console.log(contacts);
});

});

request.end();

输出被破坏如下:

}  }  "message": "The access token isn't valid."

如何修改程序以使输出与浏览器的结果匹配?

最佳答案

输出使用\r(回车符)作为行分隔符。 Unix 标准是 \n (换行),而 Windows 是 \r\n (CR/LF)。当您单独打印 \r 时,它会将光标返回到行首,但不会前进到下一行,并且任何其他文本都将覆盖您刚刚打印的内容。

具体:

{\r
"error": {\r
"code": "request_token_invalid", \r
"message": "The access token isn't valid."\r
}\r
}

前四行完全相互覆盖。打印“message”行后,前五个字符被}覆盖;那么第一个字符将被 { 覆盖。

你的回答很好;它的打印被搞砸了。要查看实际输出,请尝试将代码传输到 less 中,这会将 \r 显示为 ^M,或者传输到 >hexdump -C,它将显示 0d(而不是通常的 0a 表示 \n)。

在打印之前插入此内容:

contacts = contacts.replace(/\r/g, "\n");

它将被修复。

关于javascript - 为什么 Node.js 无法正确解析以下页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601661/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com