无法在Eclipse/IntelliJ中通过Java/JUnit+RestAssured发送API请求
解决RestAssured在代理环境下请求失败的问题
看起来你遇到的核心问题是RestAssured没有正确配置办公网络的代理设置,导致请求连接被重置。手动请求能成功,是因为浏览器或你用的工具已经自动读取了系统的代理配置,但RestAssured默认不会自动继承这些设置,得手动配置才行。
下面是几种可行的解决方案:
1. 在代码中直接配置代理
你可以在测试代码里显式设置RestAssured的代理参数,这样针对单个测试或测试类生效:
import io.restassured.RestAssured; import io.restassured.specification.ProxySpecification; // 基础代理配置(无需认证) RestAssured.proxy("你的代理主机地址", 代理端口); // 如果代理需要用户名密码认证 ProxySpecification proxy = new ProxySpecification("你的代理主机地址", 代理端口) .withAuth("代理用户名", "代理密码"); RestAssured.useProxy(proxy);
配置完之后,再发送GET请求应该就能正常连接了。
2. 通过JVM启动参数配置代理
如果你希望整个项目的测试都使用代理,不想在代码里硬编码,可以通过JVM参数来设置,这样所有RestAssured请求都会自动使用代理:
Eclipse设置方式:
- 打开Run Configurations
- 找到你的JUnit测试配置,切换到Arguments标签
- 在VM arguments里添加以下参数:
-Dhttp.proxyHost=你的代理主机地址 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理主机地址 -Dhttps.proxyPort=代理端口 // 若需要认证,追加以下参数 -Dhttp.proxyUser=代理用户名 -Dhttp.proxyPassword=代理密码 -Dhttps.proxyUser=代理用户名 -Dhttps.proxyPassword=代理密码
IntelliJ设置方式:
- 打开Run/Debug Configurations
- 找到你的JUnit测试配置,在VM options里添加上述参数
3. 验证代理配置是否生效
为了确保配置正确,可以在测试代码里打印当前的代理设置,确认参数是否正确应用:
System.out.println("当前RestAssured代理配置:" + RestAssured.getProxySpecification());
另外要注意,你请求的swapi.co是HTTPS协议,所以一定要确保HTTPS的代理参数也配置正确,很多时候只配置HTTP代理会导致HTTPS请求失败。
内容的提问来源于stack exchange,提问作者bobe_b
相关产品推荐
相关产品推荐

