public void setGlobalProxy(ServerClient server, String proxyAddress, HttpForward.Scheme scheme){
int port = scheme == HttpForward.Scheme.HTTPS?443:80;
boolean isSecure = scheme == HttpForward.Scheme.HTTPS;
Expectation proxyExpectation = new Expectation(
request().withPath("/.*")
).withPriority(-1).thenForward(
HttpOverrideForwardedRequest.forwardOverriddenRequest(
request().withHeader("Host",proxyAddress)
.withSocketAddress(proxyAddress,port)
.withSecure(isSecure)
)
);
server.upsert(proxyExpectation);
}
分享就有点不敢了,水平太差,大佬有兴趣的话,可以看下 apache mockserver 源码里的 example module,结合 mockserver-core module 的测试类来看体验更好,那里面有基本场景的代码样例。
这个坑,可以用框架的另外一个功能解决掉:定义一个全局的、优先级为-1 的、匹配规则为/* 的 override 期望,在转发之前重写请求,获取原请求的 host 或者其他请求头信息,添加到转发请求里,类似图中这样的。最近在用这个 apache mockserver 搭部门的 mock 平台,也遇到了这个问题。顺便强烈建议大佬尝试下这个框架的录制回放功能,贼好用。
ios 低版本系统好像需要设置个什么完全信任该证书,也在通用设置里面。不过这跟自动化工具啥关系