Java代码抛出java.net.ConnectException连接拒绝问题求助
问题描述
我在本地创建了一个JSON文件,尝试通过服务器访问(附截图:截图1、截图2)。该请求在Postman中可正常运行,但通过RestAssured代码执行时却抛出java.net.ConnectException: Connection refused: connect错误。
代码实现:
public class GetUsingLocalJson { @Test void testGet() throws Exception { given().when().get("http://localhost:3000/students").then().log().all(); } }
导入语句:
import static io.restassured.RestAssured.*; import static io.restassured.matcher.RestAssuredMatchers.*; import static org.hamcrest.Matchers.*;
求排查代码运行失败的原因。
排查步骤
- 确认本地服务器状态:运行代码时,务必保证提供JSON接口的本地服务器处于启动状态。Postman能访问不代表代码运行时服务器还在运行,可能中途意外停止。
- 核对端口一致性:仔细检查Postman请求的URL端口是否和代码中的
3000完全一致,避免端口输错。 - 检查网络环境隔离:如果代码运行在容器、虚拟机或测试沙箱环境中,
localhost可能指向的是容器/虚拟机内部而非宿主机。此时将请求URL中的localhost替换为宿主机的实际IP(如192.168.1.100)再尝试。 - 排查防火墙/安全软件拦截:本地防火墙或杀毒软件可能允许Postman访问,但拦截了Java进程的请求。可以临时关闭防火墙测试,或把Java程序加入安全软件的白名单。
- 禁用RestAssured代理:如果RestAssured被配置了全局代理,会导致请求走代理无法访问本地服务器。在代码中添加
proxy(ProxySpecification.NO_PROXY)禁用代理:given().proxy(ProxySpecification.NO_PROXY).when().get("http://localhost:3000/students").then().log().all(); - 验证服务器IP协议支持:部分服务器可能仅监听IPv6地址,而Java默认用IPv4访问
localhost。可以尝试用IPv6格式的本地地址请求:http://[::1]:3000/students,或修改服务器配置使其同时监听IPv4和IPv6。
内容的提问来源于stack exchange,提问作者hitman45
相关产品推荐
相关产品推荐

