gpt4 book ai didi

javascript - NodeJS HTTPs 请求返回 Socket 挂断

转载 作者:太空宇宙 更新时间:2023-11-03 21:52:05 26 4
gpt4 key购买 nike

const https = require("https");
const fs = require("fs");

const options = {
hostname: "en.wikipedia.org",
port: 443,
path: "/wiki/George_Washington",
method: "GET",
// ciphers: 'DES-CBC3-SHA'
};

const req = https.request(options, (res) => {
let responseBody = "";
console.log("Response started");
console.log(`Server Status: ${res.statusCode} `);
console.log(res.headers);
res.setEncoding("UTF-8");

res.once("data", (chunk) => {
console.log(chunk);
});

res.on("data", (chunk) => {
console.log(`--chunk-- ${chunk.length}`);
responseBody += chunk;
});

res.on("end", () => {
fs.writeFile("gw.html", responseBody, (err) => {
if (err) throw err;
console.log("Downloaded file");
});
});
});

req.on("error", (err) => {
console.log("Request problem", err);
});

返回

// Request problem { Error: socket hang up
// at createHangUpError (_http_client.js:330:15)
// at TLSSocket.socketOnEnd (_http_client.js:423:23)
// at TLSSocket.emit (events.js:165:20)
// at endReadableNT (_stream_readable.js:1101:12)
// at process._tickCallback (internal/process/next_tick.js:152:19) code: 'ECONNRESET' }

最佳答案

http.request() 打开到服务器的新隧道。它返回一个可写流,允许您将数据发送到服务器,并且使用服务器响应的流调用回调。现在您遇到的错误(ECONNRESET)基本上意味着隧道已关闭。当低级别发生错误(极不可能)或隧道因未接收到数据而超时时,通常会发生这种情况。在您的情况下,服务器仅在您向其发送内容时做出响应,即使它是一个空包,因此您所要做的就是结束流,导致它作为空包刷新到服务器,这会导致它回应:

 req.end();

您可能想看看 request包可以让你避免处理如此低级的事情。

关于javascript - NodeJS HTTPs 请求返回 Socket 挂断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51231205/

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