如何在SoapUI Mock Service中获取POST请求的内容与头部?
嘿,我刚碰到过类似的问题,咱们一步步来解决它!
解决SoapUI Mock Service获取POST请求头与内容的问题
首先,你碰到的NullPointerException: Cannot get property 'requestContent' on null object,大概率是因为在On Request Script里直接调用mockRequest时,这个对象还没被正确初始化绑定。别慌,咱们换个正确的姿势来获取请求内容和头部:
一、正确获取请求信息的脚本
在Mock Service的On Request Script标签页里,替换成下面的代码:
// 先确保mockRequest对象已初始化,避免空指针错误 if (mockRequest != null) { // 打印POST请求内容到日志面板 log.info "POST请求内容: \n${mockRequest.requestContent}" // 遍历打印所有请求头部信息 log.info "请求头部详情:" mockRequest.requestHeaders.each { headerKey, headerValue -> log.info "${headerKey}: ${headerValue}" } } else { log.warn "mockRequest对象未初始化,暂时无法获取请求信息" }
二、关键注意事项
- 脚本位置别错:一定要在具体Mock Service的On Request Script里编写,不是全局脚本或者其他无关标签页。
- 重启Mock服务:修改完脚本后,必须先停止当前运行的Mock Service,再重新启动,新脚本才会生效。
- 找对日志面板:输出的内容会显示在SoapUI底部的Log面板里,不是弹出窗口哦,别找错地方啦。
三、额外实用小技巧
如果想把请求信息保存到带日期的自定义日志文件里(和你提到的现有日志格式匹配),可以加这段代码:
if (mockRequest != null) { // 创建带时间戳的日志文件 def timestamp = new Date().format('yyyyMMdd_HHmmss') def logFile = new File("mock_request_${timestamp}.txt") // 写入请求时间、头部和内容 logFile.write("请求时间: ${new Date()}\n\n请求头部:\n") mockRequest.requestHeaders.each { key, value -> logFile.append("${key}: ${value}\n") } logFile.append("\n请求内容:\n${mockRequest.requestContent}") log.info "请求日志已保存至: ${logFile.absolutePath}" }
这样每次请求的头和内容都会被存到带时间戳的文件里,方便后续回溯排查~
内容的提问来源于stack exchange,提问作者Kamil
相关产品推荐
相关产品推荐

