You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中发起HTTP请求无响应问题排查求助

排查Node.js http模块请求无响应的问题

我来帮你梳理下这段代码里的问题,这些错误会导致你无法获取到服务器响应:

几个关键错误点

  • http.request 不支持 postData 配置项
    你在请求选项里写的postData是无效的,Node.js的http模块根本不识别这个字段,请求体需要通过请求对象的write方法手动发送。

  • 未监听响应事件且未结束请求
    调用http.request后,你必须监听response事件来接收服务器返回的内容,而且一定要调用req.end()来结束请求——否则请求会一直处于挂起状态,服务器不会处理也不会返回响应。

  • Buffer 写法过时
    新版Node.js中new Buffer()已经被废弃,建议使用Buffer.from()替代,避免运行时警告或报错。

  • 请求体格式与Content-Type不匹配
    你要发送的是JSON-RPC请求,但代码里设置的是application/x-www-form-urlencoded类型,而且参数格式也不对。JSON-RPC的请求体应该是JSON字符串,对应的Content-Type要设为application/json。

修正后的完整代码

const http = require("http");
const username = "user";
const password = 'pass';

// 构造符合JSON-RPC规范的请求体
const requestBody = JSON.stringify({
  jsonrpc: '1.0',
  id: 'curltest',
  method: 'decoderawtransaction',
  params: ['010000000157065146a6b32b224b87d47c1b0283b1ae2fa5bd4f9af9ebc45928110f87fbae0000...']
});

const options = { 
  host: "127.0.0.1", 
  port: 8332, // 建议用数字类型,避免隐式转换问题
  path: "/path", 
  method: "POST", 
  headers: { 
    "Authorization": "Basic " + Buffer.from(`${username}:${password}`).toString('base64'),
    "Content-Type": "application/json",
    "Content-Length": Buffer.byteLength(requestBody) // 必须设置,告诉服务器请求体的字节长度
  } 
};

const req = http.request(options, (res) => {
  let responseData = '';

  // 接收响应数据片段
  res.on('data', (chunk) => {
    responseData += chunk;
  });

  // 响应接收完成
  res.on('end', () => {
    console.log('服务器响应:', responseData);
    // 如果需要解析JSON响应,可以用 JSON.parse(responseData)
  });
});

// 捕获请求过程中的错误(比如连接失败、超时等)
req.on('error', (err) => {
  console.error('请求出错:', err.message);
});

// 发送请求体
req.write(requestBody);
// 结束请求,告诉服务器已经发送完所有数据
req.end();

额外说明

  • 一定要监听error事件,否则如果请求出现错误(比如目标端口未开放、服务器拒绝连接),程序会直接抛出未捕获的异常。
  • Content-Length头是必须的,它告诉服务器需要接收多少字节的请求体,否则服务器可能会等待超时或者无法正确解析请求。

内容的提问来源于stack exchange,提问作者coin-o-pedia c

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:19:52