Java Wiremock调用方法

Java Wiremock调用方法,java,wiremock,Java,Wiremock,是否有一种方法可以在服务器每次收到请求时调用java方法 wireMockServer.stubFor(post(urlEqualTo("/testpost")) .willReturn(onIncomingRequest())); 这样,每次使用此存根时,服务器都会调用OnInMingRequest。您可以通过编写自定义响应转换器来实现所需的行为。响应转换器将查询WireMock的requests admin端点以检索最近的请求,并解析该数

是否有一种方法可以在服务器每次收到请求时调用java方法

wireMockServer.stubFor(post(urlEqualTo("/testpost"))
                .willReturn(onIncomingRequest()));

这样,每次使用此存根时,服务器都会调用OnInMingRequest。

您可以通过编写自定义响应转换器来实现所需的行为。响应转换器将查询WireMock的requests admin端点以检索最近的请求,并解析该数据以形成响应

伪代码:

公共类LastRequestBody扩展了ResponseTransformer{
公共字符串getName(){
返回“LastRequestBody”;
}
@凌驾
公共响应转换(请求、响应、文件源文件、参数){
//设置一些客户端
字符串wmRequests=”http://127.0.0.1:8080/__admin/requests“//更新到WM基本url所在的任何位置
OkHttpClient=新的OkHttpClient();
字符串url=HttpUrl.parse().newBuilder().build().toString();
okhttp3.Response okhttpResponse=client.newCall(okHttpRequest.execute();
//将WM响应解析为JSON
JSONParser=新的JSONParser();
JSONObject responseObj=(JSONObject)parser.parse(okhttpResponse.body().string());
JSONArray请求=(JSONArray)responseObj.get(“请求”);
JSONObject mostRecentRequest=(JSONObject)请求[0];
字符串mostRecentRequestBody=mostRecentRequest.get(“请求”).get(“body”).toString();
//返回与原始请求/响应类似的响应
返回Response.Builder.like(Response.but().body(mostRecentRequestBody.toJSONString()).build();
}
}
上面的代码可能不是100%正确,但大纲应该足够坚实

查看WM Admin页面,了解有关查询的更多信息
(其他假设-我使用JSONSimple进行解析,使用OkHttp3向WM发出请求)

实现这一点的(最)正确方法是实现一个
PostServeAction
。有关详细信息,请参阅和。

OnInMingRequest()的
OnInMingRequest()到底要做什么?WireMock是否需要执行某些操作,或者您只是希望在触发请求时发生某些操作?@agoff事实上,我希望存储最后一个请求正文,并将其与“/getlastrequest”存根一起返回。我发现的唯一方法是在每次触发新的“/testpost”请求时重写存根响应。所以我想“当一个请求被触发时会发生一些事情”。所以你想做一些类似的事情:第一个请求
/test
,主体为
{some:“value”}
,响应为200,主体为空。对
/test
的第二个请求的主体为
{some:“other value”}
,响应为200和
{some:“value”}
?@agoff更像是对
/gettest
的第二个请求将响应为200和
{some value}
,因此前一个请求的请求url不一定与当前请求匹配?