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

使用WireMock模拟API响应时遇环回错误及localhost问题求助

解决WireMock环回IP访问400与localhost解析异常问题

1. 处理「Request on loopback from external IP」400错误

WireMock默认会拦截外部IP发起的环回请求,需通过配置解除限制:

方式一:JUnit 5注解配置

使用WireMock的JUnit 5扩展时,在@WireMockTest中指定绑定地址为0.0.0.0(允许所有网卡访问):

import com.github.tomakehurst.wiremock.junit5.WireMockTest;

@WireMockTest(httpPort = 8080, bindAddress = "0.0.0.0")
public class YourTestClass {
    // 测试逻辑
}

方式二:手动启动WireMockServer

若手动创建服务实例,显式设置绑定地址:

WireMockServer wireMockServer = new WireMockServer(options()
        .port(8080)
        .bindAddress("0.0.0.0"));
wireMockServer.start();

2. 解决「Unknown hostname localhost」错误

该问题多因WireMock绑定地址或Spring请求配置异常导致:

确认WireMock绑定范围

确保WireMock启动时绑定了localhost或0.0.0.0(0.0.0.0会覆盖localhost监听),避免仅绑定外部IP导致本地无法解析。

修正Spring客户端请求地址

检查RestTemplate/WebClient的请求基准地址,确保使用localhost而非外部IP:

String wireMockBaseUrl = "http://localhost:8080";
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject(wireMockBaseUrl + "/your-api-path", String.class);

验证本地hosts文件(可选)

确认系统hosts文件存在127.0.0.1 localhost和::1 localhost条目:

  • Windows路径:C:\Windows\System32\drivers\etc\hosts
  • macOS/Linux路径:/etc/hosts
    缺失则添加对应条目(需管理员权限)。

3. 验证流程

  1. 启动WireMock后,通过浏览器或curl访问http://localhost:8080/__admin,确认管理接口正常响应
  2. 用Spring客户端发起请求,验证是否正常获取模拟响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:54:56