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

Java调用Node.js Express API服务器遇ConnectException问题求助

Node.js与Java交互连接失败问题排查与解决

问题描述

搭建Node.js Express API服务器实现与Java的数据交互,服务器已在局域网运行,但Java发送POST请求时出现错误:java.net.ConnectException: Failed to connect to /127.0.0.1:10000,同一环境下JavaScript客户端用fetch可正常请求。

问题原因及解决方案

1. 服务器绑定地址限制(最可能)

Express默认仅绑定127.0.0.1(本地回环地址),仅允许本机访问。如果Java程序在局域网另一台设备运行,无法通过该地址连接。

  • 解决方法:修改app.listen的绑定地址为0.0.0.0,允许所有网卡接入:
app.listen(PORT, '0.0.0.0', function (err) {
  if (err) console.log("Error in server setup");
  console.log("Server listening on Port", PORT);
});

2. Java访问IP错误

若Java程序与Node.js服务器不在同一台机器,使用127.0.0.1会指向Java本机而非服务器。

  • 解决方法:将Java代码中的URL替换为服务器的局域网真实IP(如192.168.x.x):
String url = "http://192.168.1.100:10000/api/server"; // 替换为你的服务器局域网IP

3. 防火墙/端口拦截

服务器或Java所在设备的防火墙可能拦截了10000端口的通信。

  • 解决方法:
    • 服务器端:开放10000端口(Linux用ufw allow 10000,Windows在防火墙高级设置添加入站规则)
    • 测试连通性:用telnet 服务器IP 10000或curl http://服务器IP:10000/api/server验证端口是否可访问

4. 端口占用或服务器未正常启动

可能存在端口被其他程序占用,或服务器启动有隐藏错误。

  • 解决方法:
    • 检查端口占用:Windows执行netstat -ano | findstr :10000,Linux执行lsof -i :10000
    • 查看Node.js服务器日志,确认是否成功监听10000端口

相关代码

index.js

"use strict";
const express = require("express");

const app = express();

const PORT = 10000;

app.use(express.json({ limit: "50mb" }));

app.use("/api", require("./controllers/auth"));

app.listen(PORT, function (err) {
  if (err) console.log("Error in server setup");
  console.log("Server listening on Port", PORT);
});

auth.js

const express = require("express");
const server = require("./server");

const router = express.Router();

router.post("/server", server);

module.exports = router;

server.js

const server = async (req, res) => {
  console.log(req.body);
  return res.json({ status: "success" });
};

module.exports = server;

Main.java

public class Main {
  public static void main(String[] args) throws Exception {
    String url = "http://127.0.0.1:10000/api/server";
    String json = "{\"request\": \"requesting\"}";

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json");
    con.setDoOutput(true);

    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(json);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();
    System.out.println("res code");
    System.out.println("Response Code: " + responseCode);

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
      response.append(inputLine);
    }
    in.close();

    System.out.println("res string");
    System.out.println(response.toString());
  }
}

内容的提问来源于stack exchange,提问作者seriously

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:39:50