【已解决】cn.hutool.core.io.IORuntimeException: ConnectException: Connection refused: connect

【已解决】cn.hutool.core.io.IORuntimeException: ConnectException: Connection refused: connect

一、问题复现

使用 cn.hutool.http.HttpUtilpost() 方法时发生报错。

二、报错信息

cn.hutool.core.io.IORuntimeException: ConnectException: Connection refused: connect
	at cn.hutool.http.HttpRequest.send(HttpRequest.java:1165)
	at cn.hutool.http.HttpRequest.execute(HttpRequest.java:957)
	at cn.hutool.http.HttpRequest.execute(HttpRequest.java:928)
	at cn.hutool.http.HttpUtil.post(HttpUtil.java:192)
	at cn.hutool.http.HttpUtil.post(HttpUtil.java:179)
	...
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:607)
	at java.net.Socket.connect(Socket.java:556)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
	at sun.net.www.http.HttpClient.New(HttpClient.java:339)
	at sun.net.www.http.HttpClient.New(HttpClient.java:357)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1228)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1342)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1317)
	at cn.hutool.http.HttpConnection.getOutputStream(HttpConnection.java:449)
	at cn.hutool.http.HttpRequest.sendFormUrlEncoded(HttpRequest.java:1188)
	at cn.hutool.http.HttpRequest.send(HttpRequest.java:1157)
	... 101 common frames omitted

三、解决方法

(1)参考方案

java.net.ConnectException: Connection refused: connect 错误通常表示你的应用程序尝试连接某个服务(如数据库、其他服务器或 API),但连接被拒绝了。这种情况可能由以下几种原因引起:

  1. 常见原因

    • 服务未启动:你尝试连接的服务可能没有启动,或者没有正确启动。
    • 主机或端口错误:应用程序可能尝试连接错误的主机或端口,检查你的配置。
    • 防火墙问题:防火墙可能阻止了应用程序与服务之间的连接。
    • 网络问题:可能存在网络问题,如应用程序所在服务器与目标服务之间的连接中断。
    • 端口未开启:目标服务可能没有在指定的端口上监听。
    • 协议不匹配:如果应用程序尝试使用不兼容的协议(例如 HTTPHTTPS),连接可能会被拒绝。
    • 配置错误:目标服务(如数据库或服务器)的配置错误也可能导致连接被拒绝。
  2. 排查步骤

    • 检查服务状态:确认你要连接的服务已经正常运行,并在正确的端口上监听。
    • 检查主机和端口:再次核对连接配置(如数据库 URL、服务器 IPAPI 地址),确保它们是正确的。
    • 测试连接:使用 pingtelnetnc 等工具测试目标主机和端口是否可访问。
    • 检查防火墙规则:确保防火墙没有阻止应用程序与服务之间的通信。
    • 查看服务日志:检查目标服务的日志,查找任何可能导致连接被拒绝的错误信息。
    • 确认协议匹配:确保使用了正确的协议(如 HTTPHTTPS 之间的匹配)。

(2)我的情况

我遇到的情况是服务未启动,重新启动该服务就好了。

四、适用范围

报错信息一般会提示你出错的代码行,你只要照着提示找到对应的代码语句进行检查就行,如:

cn.hutool.core.io.IORuntimeException: ConnectException: Connection refused: connect
	at cn.hutool.http.HttpRequest.send(HttpRequest.java:1165)
	at cn.hutool.http.HttpRequest.execute(HttpRequest.java:957)
	at cn.hutool.http.HttpRequest.execute(HttpRequest.java:928)
	at cn.hutool.http.HttpUtil.post(HttpUtil.java:192)
	at cn.hutool.http.HttpUtil.post(HttpUtil.java:179)
	at com.my.auth.AuthService.getUserById(AuthService.java:139)	

上面的 com.my.auth.AuthService.getUserById 是我写的方法,第 139 行代码是使用 HttpUtil 连接另外的服务。

结合报错信息,就能发现是 post 的服务未启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨momo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值