node.js - 使用 Node js 进行 REST 调用 : "Error: connect ETIMEDOUT" and "http code 0"

标签 node.js http request postman

我设置了一个 REST 服务器,我可以通过 Postman 发送 http 请求。 效果很好。 现在我尝试从该服务器向另一台服务器发送 GET 请求。

让我告诉你:

const express = require('express');
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
const router = express.Router();

router.get('/', (req, res, next) => {
    const http = new XMLHttpRequest();
    const url = 'https://jsonplaceholder.typicode.com/posts';
    // Postman Mock
    //const url = '...';
    http.open("GET", url);
    http.send();

    http.onreadystatechange = function() {
        console.log(this.readyState, this.status);
        console.log(this.statusText);
        if (this.readyState == 4 && this.status == 200){
            console.log("It worked!");
            console.log(http.responseText);
        }
    }

    res.status(200).json({
        message: 'Handling GET requests to /product'
    });
});
module.exports = router;

我通过 Postman 向我的服务器发送一个 GET 请求,这应该会触发另一个从我的服务器发送到 jsonplacholder 的 GET 请求。 。 但我明白了:

4 0

错误:连接 ETIMEDOUT ... 在 TCPConnectWrap.afterConnect [作为未完成] (net.js:1128:14) { 错误号:'ETIMEDOUT', 代码:'ETIMEDOUT', 系统调用:'连接', 地址: '...', 港口: ... }

没有 HTTP 代码 0 ...
另外我尝试过这个:

<!DOCTYPE html>
<html>
<body>

<h2>The XMLHttpRequest Object</h2>


<script>
    const Http = new XMLHttpRequest();
    const url='https://jsonplaceholder.typicode.com/posts';
    Http.open("GET", url);
    Http.send();

    Http.onreadystatechange = (e) => {
        console.log("TEST");
        console.log(Http.readyState, Http.status);
        console.log(Http.responseText)
    }
</script>

</body>
</html>

在浏览器控制台中您可以看到:
测试
2 200
测试
3 200
...来自 jsonplaceholder 的超长 json

所以这里工作得很好。 我究竟做错了什么?甚至可以像我尝试过的那样发送请求吗?

感谢您的帮助! :)

马克

最佳答案

你的代码工作得很好。看来您有一个代理阻止了该请求。您可以查看此线程以使用 xmlHttpRequest Use node-XMLHttpRequest through a Proxy? 添加代理.

我建议您使用更高级别的http请求库,例如superagent https://github.com/visionmedia/superagent

关于node.js - 使用 Node js 进行 REST 调用 : "Error: connect ETIMEDOUT" and "http code 0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59105690/

相关文章:

javascript - 使用 Node js 请求模块发出同步请求

java - 在 android 上具有授权的 HTTP POST 请求

rest - 使用 header 或 POST 数据来传递 HTTP 身份验证 token ?

python - 在哪里可以找到函数的 kwargs/args 文档

node.js - Nextjs 无法在生产 node_env 的 '.next' 目录中找到有效构建

javascript - Node.js async.series 和 async.each 未按预期执行

http - GAE Go http 发布链接

http - 当一批中有多个 PATCH 请求时,为什么我的 Drive API 请求会失败?

node.js - 如何将 process.env.NODE_ENV 从 Gulp 传递到 Webpack?

node.js - 使用 highcharts 在服务器端生成 svg