
1. SoapUI 是什么为什么2026年还在用它SoapUI 不是某个新出的AI工具也不是最近爆火的低代码平台它是一个已经稳定服役超过15年的老牌API测试专业工具。很多人看到“SOAP”就以为它只测老掉牙的Web Service其实从5.0版本开始SoapUI 就全面支持 REST、GraphQL、gRPC、OpenAPISwagger、AsyncAPI 等全部现代接口协议。2026年你依然会在银行核心系统、医保平台、政务中台、工业物联网平台的测试团队里频繁见到它——不是因为技术落后恰恰是因为它足够“重”重在稳定、重在可控、重在可审计。我带过三个不同行业的测试团队从金融到医疗再到智能制造发现一个共性当项目涉及多层安全网关、国密SM4加解密透传、WS-Security签名验证、或需要生成符合GB/T 28181标准的SIP信令报文时轻量级的Postman或Insomnia根本无法完成断言逻辑、无法嵌入Java脚本做动态签名、也无法导出符合等保三级要求的《接口测试报告》模板。而SoapUI原生支持Groovy脚本引擎、内置XPath/XQuery/JSONPath三重解析器、可直接调用本地JAR包、支持JDBC直连数据库校验响应一致性——这些能力不是靠插件堆出来的而是写进内核的。关键词“SoapUI 下载安装使用教程”背后的真实需求从来不是“点开就能用”而是“装得稳、配得准、跑得久、审得过”。所谓“附安装包及视频”本质是规避企业内网环境下无法访问官网、证书策略拦截下载、Java环境错配导致启动失败这三大高频堵点。我见过太多测试工程师花两天时间卡在java.lang.UnsupportedClassVersionError: org/apache/log4j/Logger has been compiled by a more recent version of the Java Runtime这种报错上最后发现只是因为公司统一部署的JDK11镜像里混进了JDK17编译的log4j2.18.jar。所以2026年这份教程的核心不是教你怎么点下一步而是帮你绕开那些没人告诉你、但90%人会踩的“静默陷阱”。它适合三类人一是刚入职需要快速接手遗留SOAP服务的测试新人二是负责等保测评材料准备的测试负责人三是需要在离线环境如涉密专网、产线隔离网中部署标准化测试流程的QA架构师。如果你只是想临时调一个天气API那真没必要折腾SoapUI——但凡你的工作流里出现“UAT环境需提供全链路压测报告”“监管检查要求留存原始请求/响应二进制流”“第三方系统只提供WSDL不开放Swagger”那就请认真读完接下来的每一步。2. 安装前必须搞清的四个底层逻辑2.1 SoapUI 的运行机制不是“双击即用”而是“Java容器独立进程”很多教程一上来就说“下载exe直接安装”这是最大的误导。SoapUI Professional商业版确实有Windows Installer但开源版SoapUI Open Source当前最新稳定版为5.8.02025年Q4发布本质上是一个基于Java Swing的桌面应用它的启动文件soapui.bat或soapui.sh实际执行的是java -Xms128M -Xmx1024M -Dsoapui.propertiessoapui-settings.xml -cp lib/* com.eviware.soapui.SoapUI这意味着它不依赖.NET Framework或VC运行库但强依赖特定版本的JRE/JDK-Xmx1024M参数决定了最大堆内存当测试包含10万行CSV数据驱动的场景时这个值必须手动调大soapui-settings.xml是全局配置中心里面定义了默认HTTP超时、代理策略、SSL信任库路径——这些在图形界面里根本找不到入口必须手动编辑。我实测过在JDK17u33环境下启动SoapUI 5.7.2会触发java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema因为JAXB在JDK11后被移除。解决方案不是降级JDK而是把jaxb-api-2.3.1.jar和jaxb-runtime-2.3.1.jar放进lib目录并在soapui.bat的-cp参数里显式追加。这个细节99%的视频教程都不会提但它是企业内网安装成功率的关键。2.2 “安装包”不等于“绿色免装”真正的离线部署要拆解三个组件网络搜索热词里反复出现“安装包”但很多人不知道SoapUI离线部署实际包含三个独立模块组件作用是否必须替换方案SoapUI Core主程序UI框架基础协议栈必须无替代仅官方提供ReadyAPI Plugin商业版功能扩展如LoadUI性能测试模块可选开源版完全不需要Groovy SDK脚本执行环境SoapUI 5.8.0默认捆绑Groovy 3.0.9必须若需调用Kotlin代码需额外引入kotlin-stdlib重点来了所谓“附安装包”真正有价值的是预编译的Groovy脚本依赖包集合。比如你要做JWT Token自动续签需要nimbus-jose-jwt-9.37.2.jar要做SM2国密签名需要bcprov-jdk15on-1.70.jar。这些JAR包不能简单丢进lib目录——必须按META-INF/MANIFEST.MF里的Bundle-ClassPath规则注册否则Groovy脚本里import org.bouncycastle.crypto.params.ECPrivateKeyParameters会报错。我在某省医保平台项目里就是因为少了一个bcpg-jdk15on-1.70.jar导致SM2验签脚本在Linux服务器上始终返回null排查了17小时才发现是PGP加密组件缺失。2.3 视频教程的致命缺陷它无法传递“环境指纹”所有“SoapUI安装视频”都展示在干净的Win10虚拟机里点击下一步但现实是你的电脑可能装了360安全卫士会劫持java.exe进程、公司域控策略禁用了javaw.exe的GUI权限、杀毒软件把soapui.sh识别为恶意脚本。更隐蔽的是显卡驱动问题——SoapUI的Swing界面在NVIDIA 515.65.01驱动下会出现按钮文字乱码必须在soapui.bat里添加-Dsun.java2d.xrenderfalse参数强制回退到旧渲染引擎。这就是为什么我坚持在教程里强调“环境指纹采集”执行java -version并记录完整输出注意区分openjdk和corretto运行wmic product get name,version \| findstr Java查已安装Java产品检查HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment注册表项用Process Explorer查看soapui.exe实际加载的DLL列表。没有这四步任何视频演示都是空中楼阁。去年帮某车企做MES系统接口测试他们提供的“标准镜像”里Java版本显示为11.0.18但java -XshowSettings:properties -version暴露出真实JRE路径指向一个被篡改过的jre-11.0.18_7里面rt.jar被替换成阉割版——结果SoapUI连最基本的XML Schema校验都失败。2.4 2026年必须关注的合规红线FIPS 140-2与国密SM系列支持SoapUI 5.8.0是首个通过FIPS 140-2 Level 1认证的版本认证编号#3421这意味着它内置的Bouncy Castle加密库已通过美国国家标准与技术研究院NIST的密码模块验证。但国内用户更关心的是国密支持SM2非对称加密需启用-Dsoapui.ssl.providerBC参数并加载bcprov-ext-jdk15on-1.70.jarSM3哈希算法在Groovy脚本中调用new org.bouncycastle.crypto.params.SM3Digest().doFinal()SM4分组加密必须使用Cipher.getInstance(SM4/CBC/PKCS5Padding, BC)且IV长度严格为16字节。这里有个关键细节SoapUI默认的SSLContext使用SunJSSE提供者而国密算法必须绑定Bouncy Castle。如果只在脚本里Security.addProvider(new BouncyCastleProvider())但没在启动参数里指定-Dsoapui.ssl.providerBC那么HTTPS请求仍会走默认JSSE导致SM2证书握手失败。我在某电力调度系统测试中就是因为漏了这个JVM参数连续三天抓包看到ClientHello里根本没有SM2曲线标识。3. 从零开始的安装实操避开95%人踩过的7个坑3.1 下载阶段认准唯一可信源拒绝“高速下载站”SoapUI官网https://www.soapui.org已明确声明所有第三方下载站点提供的“破解版”“绿色版”“集成JDK版”均存在严重安全风险。2025年Q3安全研究团队在“XX下载站”的SoapUI 5.7.0安装包中发现持久化后门它会在%APPDATA%\Roaming\soapui\logs\目录下创建update_checker.dll该DLL通过CreateRemoteThread注入explorer.exe每24小时向C2服务器发送主机名、MAC地址、已安装软件列表。正确下载路径只有两条开源版访问https://github.com/SmartBear/soapui/releases选择soapui-5.8.0.zip注意是zip不是exeexe安装包仅用于Professional版商业版通过SmartBear客户门户下载需输入合同号激活。提示不要下载soapui-x64-5.8.0.exe这是ReadyAPI的安装器安装后默认启用30天试用期到期会弹窗阻断所有测试执行。开源版ZIP包解压即用这才是真正“免激活”的方案。解压后目录结构必须包含bin/启动脚本soapui.bat、soapui.shlib/核心JAR包soapui-5.8.0.jar、groovy-3.0.9.jar等plugins/空目录用于后续扩展workspace/首次启动时自动生成若发现lib/目录下有license.jar或activation.jar说明下载到了商业版混淆包立即删除重下。3.2 Java环境配置JDK11是黄金平衡点SoapUI 5.8.0官方支持JDK8~JDK17但实测发现JDK8XPath 2.0支持不完整fn:replace()函数返回空字符串JDK17Swing UI在HiDPI屏幕缩放125%时按钮文字截断JDK11.0.20 LTS2025年4月发布是唯一完美匹配版本既兼容所有Groovy语法又通过OpenJFX修复了高分屏渲染问题。配置步骤以Windows为例下载Adoptium Temurin JDK11.0.208https://adoptium.net/zh-CN/temurin/releases/?version11安装时勾选“Add to PATH”打开CMD执行java -version # 应输出openjdk version 11.0.20 2025-04-16 echo %JAVA_HOME% # 应输出C:\Program Files\Eclipse Adoptium\jdk-11.0.20.8-hotspot修改bin\soapui.bat在echo off后添加set JAVA_HOMEC:\Program Files\Eclipse Adoptium\jdk-11.0.20.8-hotspot set PATH%JAVA_HOME%\bin;%PATH%注意不要依赖系统环境变量SoapUI启动脚本会优先读取自身定义的JAVA_HOME这样能避免公司IT部门推送的全局JDK策略干扰。3.3 首次启动必做的三件事防止配置污染第一次双击soapui.bat后不要急着建项目。先做关闭自动更新菜单栏File → Preferences → Update Settings取消勾选Check for updates automatically。企业内网根本连不上SmartBear更新服务器每次启动都会卡在“Checking for updates...”30秒重置日志级别File → Preferences → Log Viewer将Log Level从INFO改为WARN。默认INFO级别会记录每个HTTP请求头1000次循环测试产生3GB日志直接撑爆C盘禁用Telemetry在soapui.bat的java命令行末尾添加-Dsoapui.telemetry.enabledfalse -Dsoapui.stats.disabledtrue这三步做完再重启SoapUI你会发现启动时间从42秒缩短到8秒日志目录不再疯狂增长。3.4 创建第一个SOAP项目WSDL解析的隐藏开关右键Projects → New SOAP Project粘贴WSDL地址如https://www.webservicex.net/globalweather.asmx?WSDL后关键操作在点击OK前勾选Create sample requests for all operations生成默认请求模板取消勾选Validate WSDL很多政府网站WSDL引用了不可达的xsd:import地址勾选会导致解析失败在Initial WSDL下方点击Advanced设置Timeout (ms)为15000默认5000太短Proxy Settings保持Use system proxy若内网需代理在此处填http://proxy.corp:8080。生成的请求里你会发现soapenv:Body为空。这是因为WSDL里wsdl:message nameGetWeather没有定义part nameparameters elementtns:GetWeather/。此时要手动在请求体里填入soapenv:Body web:GetWeather xmlns:webhttp://www.webserviceX.NET web:CityNameBeijing/web:CityName web:CountryNameChina/web:CountryName /web:GetWeather /soapenv:Body实操心得WSDL解析失败90%原因是命名空间namespace不匹配。用Chrome开发者工具抓取真实请求复制soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/里的完整xmlns粘贴到SoapUI请求的根节点上比手动猜准确率高得多。3.5 REST项目创建陷阱Content-Type必须手写创建REST项目时很多人直接填URL点OK结果GET /users返回406 Not Acceptable。这是因为SoapUI默认不发送Accept: application/json头。正确做法Projects → New REST ProjectURL填https://jsonplaceholder.typicode.com在生成的资源列表里右键posts → GET选择New Request在请求窗口的Headers标签页手动添加两行Accept: application/jsonContent-Type: application/json为什么Content-Type要手写因为POST/PUT请求若不设此头服务器会按application/x-www-form-urlencoded解析导致JSON body被当成乱码。我在某银行手机银行接口测试中就因漏写Content-Type导致{mobile:138****1234}被解析成mobile%7B%22mobile%22%3A%22138****1234%22%7D风控系统直接拦截。3.6 断言配置实战从“响应码正确”到“业务逻辑正确”新手常犯错误只加Status Code Match断言期望200。但真实场景中支付接口返回200不代表支付成功要看result.code SUCCESS登录接口返回200但response.token为空字符串仍是失败。正确断言链应包含三层协议层Status Code Match检查HTTP状态格式层Valid HTTP Status CodesContains检查响应体是否含code:0业务层Script AssertionGroovy脚本深度校验。例如校验微信支付回调def response context.response def json new groovy.json.JsonSlurper().parseText(response) // 检查业务码 assert json.return_code SUCCESS : return_code not SUCCESS assert json.result_code SUCCESS : result_code not SUCCESS // 检查签名SM3摘要 def signSource appid${json.appid}mch_id${json.mch_id}nonce_str${json.nonce_str}... def sm3Hex new org.bouncycastle.crypto.params.SM3Digest().digest(signSource.bytes) assert json.sign sm3Hex.toUpperCase() : SM3 signature mismatch注意Groovy脚本里不能用println要用log.info(xxx)否则控制台不输出。这个细节让无数人以为脚本没执行。3.7 数据驱动测试CSV文件编码必须是UTF-8 BOM右键请求→Add → Data Source→选择CSV文件常见错误是Excel另存为CSV时选了“CSV UTF-8逗号分隔”但Windows记事本打开显示乱码。真相是Excel生成的UTF-8 CSV没有BOM头而SoapUI的CSV Data Source组件要求必须有BOM\uFEFF。解决方法用VS Code打开CSV右下角点击编码→Reopen with Encoding→UTF-8 with BOM保存后第一行会显示city,country前面有看不见的BOM字符在SoapUI里Data Source设置中Encoding必须选UTF-8不能选Default。我曾为某跨境电商做多语言商品同步测试因CSV无BOM商品名称,商品描述中的中文全部变成????导致127个SKU创建失败。后来发现只要用Notepad另存为“UTF-8-BOM”即可解决。4. 核心功能深度拆解不止于“发请求”的12个高阶用法4.1 Groovy脚本调试用log4j2替代System.out.printlnSoapUI的Groovy控制台Script Editor不支持断点调试但可通过log4j2实现精准追踪在bin\soapui.bat里添加-Dlog4j2.configurationFilefile:./conf/log4j2.xml创建conf/log4j2.xml?xml version1.0 encodingUTF-8? Configuration statusWARN Appenders File nameDebugLog fileNamelogs/groovy-debug.log PatternLayout pattern%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n/ /File /Appenders Loggers Root leveldebug AppenderRef refDebugLog/ /Root /Loggers /Configuration在脚本中写import org.apache.logging.log4j.LogManager def log LogManager.getLogger(MyTest) log.debug(Request body: ${requestContent}) log.error(Payment failed: ${json.err_msg})生成的logs/groovy-debug.log会按时间戳精确记录每行执行比肉眼数log.info输出可靠十倍。4.2 JDBC测试绕过SoapUI的连接池限制SoapUI内置JDBC不支持连接池高并发测试时频繁创建/销毁连接导致数据库CPU飙升。解决方案下载hikari-cp-5.0.1.jar放入lib/目录在Groovy脚本中import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource def config new HikariConfig() config.jdbcUrl jdbc:mysql://db.corp:3306/test?useSSLfalse config.username test config.password 123456 config.maximumPoolSize 20 def ds new HikariDataSource(config) def conn ds.getConnection() def stmt conn.createStatement() def rs stmt.executeQuery(SELECT COUNT(*) FROM orders WHERE statusPAID) // ...处理结果 rs.close(); stmt.close(); conn.close()注意必须手动close()否则连接泄漏。我在某物流平台压测中因忘记关闭200并发跑了10分钟后数据库连接数达到998/1000整个测试环境瘫痪。4.3 MockService高级用法动态响应延迟模拟右键项目→New MockService默认只返回静态XML。要模拟真实网络抖动在MockResponse里写Groovy脚本// 模拟30%概率超时 def delay Math.random() 0.3 ? 5000 : 200 Thread.sleep(delay) // 根据请求参数动态返回 def city mockRequest.requestContent.split(CityName)[1].split(/CityName)[0] if (city Shanghai) { return soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ soap:BodyGetWeatherResponse xmlnshttp://www.webserviceX.NETGetWeatherResultCloudy/GetWeatherResult/GetWeatherResponse/soap:Body /soap:Envelope } else { return soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ soap:BodyGetWeatherResponse xmlnshttp://www.webserviceX.NETGetWeatherResultSunny/GetWeatherResult/GetWeatherResponse/soap:Body /soap:Envelope }在MockService配置里Dispatch Style选Groovy ScriptDispatch Key留空。这样就能用一个MockService模拟不同城市天气且30%请求会故意延迟5秒完美复现弱网环境。4.4 自动化测试集成用Maven调用SoapUI测试套件SoapUI本身不提供CLI批量执行但可通过Maven插件实现在pom.xml中添加plugin groupIdcom.smartbear.soapui/groupId artifactIdsoapui-maven-plugin/artifactId version5.8.0/version configuration projectFilesrc/test/resources/my-project-soapui-project.xml/projectFile outputFoldertarget/soapui-reports/outputFolder testSuiteRegression Suite/testSuite testCaseTC-001_Login/testCase junitReporttrue/junitReport /configuration executions execution phasetest/phase goalsgoaltest/goal/goals /execution /executions /plugin执行mvn test自动生成target/soapui-reports/TEST-Regression_Suite.xml可被Jenkins直接解析。关键技巧projectFile路径必须是绝对路径或相对于pom.xml的相对路径。若用CI/CD建议把SoapUI项目导出为*.xmlFile → Export Project而非.soapui-workspace后者是二进制格式无法Git版本控制。4.5 安全测试专项OWASP ZAP联动扫描SoapUI不能直接做渗透测试但可导出请求供ZAP扫描右键请求→Export Request→选择ZAP Format (.har)在ZAP中File → Import HAR File导入右键导入的请求→Attack → Active Scan。这样做的优势SoapUI里已配置好登录Cookie、CSRF Token、OAuth2 Bearer TokenZAP直接复用避免重复登录。我在某政务APP安全测评中用此方法一次性发现17个未授权访问漏洞效率是手工爬虫的8倍。4.6 性能测试边界LoadUI替代方案SoapUI开源版不支持负载测试但可用JMeter替代在SoapUI中调试好请求右键→Export Request→Apache JMeter (.jmx)用JMeter打开生成的JMX文件修改Thread Group的线程数、Ramp-up时间添加View Results Tree和Aggregate Report监听器。注意SoapUI导出的JMX默认使用HTTP Header Manager但若原请求有动态Token需在JMeter里用JSR223 PreProcessor重新生成否则所有线程共用同一个Token导致测试失效。4.7 国密SM4加解密实战从WSDL到生产环境某省级社保系统要求所有接口请求体必须SM4加密下载bcprov-ext-jdk15on-1.70.jar放入lib/在Groovy脚本中import org.bouncycastle.crypto.params.KeyParameter import org.bouncycastle.crypto.engines.SM4Engine import org.bouncycastle.crypto.params.ParametersWithIV def key 0123456789abcdef.bytes // 16字节密钥 def iv fedcba9876543210.bytes // 16字节IV def engine new SM4Engine() engine.init(true, new ParametersWithIV(new KeyParameter(key), iv)) def plainBytes requestContent.getBytes(UTF-8) def cipherBytes new byte[engine.getOutputSize(plainBytes.length)] engine.processBytes(plainBytes, 0, plainBytes.length, cipherBytes, 0) def encrypted cipherBytes.encodeBase64().toString() // 替换原始请求体 def newRequest requestContent.replace(body, body${encrypted}/body)在Headers里添加X-Encrypted: SM4标识。这套方案已在3个省级政务云项目落地SM4加密后的请求体长度恒为16字节倍数完美适配现有网关解析逻辑。4.8 测试报告定制生成等保三级要求的PDFSoapUI默认报告只有HTML等保要求必须提供PDF且含电子签名安装wkhtmltopdfhttps://wkhtmltopdf.org/在bin\soapui.bat里添加set WKHTMLTOPDF_PATHC:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe执行测试后用Groovy脚本调用def cmd $WKHTMLTOPDF_PATH --enable-javascript --footer-right [page]/[toPage] reports/test-report.html reports/test-report.pdf def proc cmd.execute() proc.waitFor()生成的PDF自动包含页码、时间戳、测试环境水印满足等保三级文档归档要求。4.9 多环境管理用Properties文件切换测试地址避免为DEV/UAT/PROD维护三个SoapUI项目创建environments.propertiesdev.endpointhttps://api-dev.corp uat.endpointhttps://api-uat.corp prod.endpointhttps://api-prod.corp dev.timeout5000在Groovy脚本中读取def props new Properties() props.load(new FileInputStream(environments.properties)) def endpoint props[${testEnvironment}.endpoint] testRunner.testCase.getTestStepByName(Request).setPropertyValue(Endpoint, endpoint)在测试套件里用TestRunListener自动加载对应环境。这样只需改一个testEnvironmentprod变量整个项目自动切换域名、超时、证书路径。4.10 接口变更监控用Git追踪WSDL/Swagger更新将SoapUI项目导出为XML后File → Export Project→my-api-soapui-project.xml提交到Git仓库设置Git Hooks# .git/hooks/pre-commit if git diff --name-only | grep .xml$ ; then echo Detected API project change, running schema validation... xmllint --noout --schema wsdl.xsd my-api-soapui-project.xml fi当WSDL变更时Git提交会自动校验XML Schema防止接口字段删除导致测试用例失效。4.11 日志审计增强记录原始二进制请求流等保要求留存原始请求/响应二进制流在bin\soapui.bat里添加-Dsoapui.log.binarytrue -Dsoapui.log.dirlogs/binary/启动后logs/binary/目录下会生成request_123456789.bin和response_123456789.bin十六进制内容与Wireshark抓包完全一致。这个功能在某金融监管检查中救了急——当监管方质疑“你们说测试了1000次证据呢”我们直接提供了1000对二进制文件每对文件SHA256哈希值与测试报告一一对应。4.12 CI/CD流水线集成Jenkins Pipeline全链路示例pipeline { agent any environment { SOAPUI_PROJECT my-api-soapui-project.xml TEST_SUITE Smoke Test } stages { stage(Checkout) { steps { checkout scm } } stage(Run SoapUI Tests) { steps { script { def result sh( script: cd soapui mvn clean test -Dsoapui.project${SOAPUI_PROJECT} -Dsoapui.testsuite${TEST_SUITE}, returnStatus: true ) if (result ! 0) { currentBuild.result UNSTABLE } } } } stage(Generate PDF Report) { steps { sh cd soapui ./generate-pdf-report.sh } } } post { always { archiveArtifacts soapui/target/soapui-reports/** publishHTML([ allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: soapui/target/soapui-reports, reportFiles: index.html, reportName: SoapUI Test Report ]) } } }这套流水线已在某车企研发云平台稳定运行18个月平均每天执行237次接口回归测试。5. 常见问题与排查技巧实录来自127个真实项目的血泪总结5.1 启动失败十大报错及根因分析报错信息根本原因解决方案Could not find or load main class com.eviware.soapui.SoapUIlib/目录缺少soapui-5.8.0.jar或JAR包损坏重新下载ZIP包用7-Zip校验lib/目录下所有JAR的CRC32java.lang.OutOfMemoryError: Java heap space-Xmx参数过小且测试含大数据集修改soapui.bat将-Xmx1024M改为-Xmx4096MFailed to load Main-Class manifest attributesoapui-5.8.0.jar的MANIFEST.MF被杀毒软件篡改从官网重新下载关闭实时防护后解压javax.net.ssl.SSLHandshakeException: No appropriate protocolJDK禁用了TLSv1.1但目标服务器只支持TLSv1.1在soapui.bat添加-Dhttps.protocolsTLSv1.1,TLSv1.2org.apache.xmlbeans.XmlException: XML document must have a root elementWSDL文件开头有BOM或空白字符用Notepad转为UTF-8无BOM删除首行空格java.lang.NoClassDefFoundError: javafx/embed/swing/JFXPanelJDK11未包含JavaFX但SoapUI UI依赖它下载openjfx-11.0.10_windows-x64_bin-sdk.zip解压后将lib目录加入CLASSPATHConnection refused: connect公司防火墙拦截localhost:8080MockService默认端口在MockService