Java Wiremock录制未保存请求头
我正在尝试使用Wiremocks录制和回放功能来录制一些请求。我调用的服务根据请求中发送的报头返回不同的值,因此我需要录制来捕获报头。我正在使用rest assured进行api调用。 下面是代码Java Wiremock录制未保存请求头,java,http-headers,rest-assured,wiremock,Java,Http Headers,Rest Assured,Wiremock,我正在尝试使用Wiremocks录制和回放功能来录制一些请求。我调用的服务根据请求中发送的报头返回不同的值,因此我需要录制来捕获报头。我正在使用rest assured进行api调用。 下面是代码 WireMockServer proxyingService = new WireMockServer( wireMockConfig() .dynamicPort() .preserveHostHeader(true)
WireMockServer proxyingService = new WireMockServer(
wireMockConfig()
.dynamicPort()
.preserveHostHeader(true)
.withRootDirectory(fileRoot.getAbsolutePath()));
FileSource fileSource = new SingleRootFileSource("wiremock");
FileSource filesFileSource = fileSource.child(FILES_ROOT);
FileSource mappingsFileSource = fileSource.child(MAPPINGS_ROOT);
proxyingService.enableRecordMappings(mappingsFileSource, filesFileSource);
proxyingService.start();
proxyingService.startRecording(recordSpec()
.forTarget("https://dev.target.mycompany.com:447/")
.captureHeader("ConsumerID")
.captureHeader("Accept")
.captureHeader("Content-Type")
.extractBinaryBodiesOver(10240)
.extractTextBodiesOver(2048)
.makeStubsPersistent(false)
.ignoreRepeatRequests()
.matchRequestBodyWithEqualToJson(false, true));
requestSpec = new RequestSpecBuilder().setBaseUri("http://localhost:" + proxyingService.port() + "/")
.addFilter(new ResponseLoggingFilter())// log request and response for better debugging. You can also
.addFilter(new RequestLoggingFilter()) // only log if a requests fails.
.build();
request = given()
.spec(requestSpec)
.header("ConsumerID", "ABC")
.header("ContextID", "DEF")
.header("Content-Type", "text/xml; charset=ISO-8859-1")
.contentType("text/xml").body(inputFile);
response = request.post("myapi/endpoint");
proxyingService.stopRecording();
proxyingService.saveMappings();
proxyingService.stop();
但是,当我查看映射文件时,我没有看到任何请求头
{
"id" : "e5f1d765-ed1c-30ba-ab74-997820a7d9b8",
"request" : {
"url" : "/myapi/endpoint",
"method" : "POST",
"bodyPatterns" : [ {
"equalToXml" : "<?xml version=\"1.0\" encoding=\"UTF-8\"> "
} ]
},
"response" : {
"status" : 201,
"bodyFileName" : "body-ccm-compiler-compile-h2LAO.txt",
"headers" : {
"X-Backside-Transport" : "OK OK,OK OK",
"Connection" : "Keep-Alive",
"Pragma" : "no-cache",
"Expires" : "0",
"Strict-Transport-Security" : "max-age=31536000 ; includeSubDomains",
"Content-Type" : "text/plain",
"Date" : "Fri, 08 Jun 2018 13:00:28 GMT",
}
},
"uuid" : "e5f1d765-ed1c-30ba-ab74-997820a7d9b8"
}
{
“id”:“e5f1d765-ed1c-30ba-ab74-997820a7d9b8”,
“请求”:{
“url”:“/myapi/endpoint”,
“方法”:“发布”,
“bodyPatterns”:[{
“equalToXml”:”
} ]
},
“答复”:{
“地位”:201,
“bodyFileName”:“body-ccm-compiler-compile-h2LAO.txt”,
“标题”:{
“X-Backside-Transport”:“OK OK,OK OK”,
“连接”:“保持活动状态”,
“Pragma”:“无缓存”,
“过期”:“0”,
“严格的传输安全”:“最大年龄=31536000;包括子域”,
“内容类型”:“文本/普通”,
“日期”:“2018年6月8日星期五13:00:28 GMT”,
}
},
“uuid”:“e5f1d765-ed1c-30ba-ab74-997820a7d9b8”
}
我做错了什么?您是否确认这些头是WireMock数据流的一部分?像WireShark或SMSniff(Nirsoft)这样的工具可以帮助您实现这一点。看起来您基本上是在WireMock文档(“”)中复制了这个示例,所以它应该可以工作。您确定它确实符合您的请求,并且您不仅仅看到了以前测试的结果吗?我之所以这么问,是因为我觉得听一个不同于你所连接的协议让我觉得可疑。(“*https://dev.target.mycompany.com:447/”vs.“*http:///localhost:”+proxyingService.port())