SoapUI怎么发送带附件的XML请求 MTOM/SWA
发布时间 - 2026-01-02 00:00:00 点击率:次SoapUI发送带附件的XML请求需区分MTOM(推荐,自动处理)和SWA(手动构造MIME),核心是正确设置Content-Type、边界符、Content-ID及xop:Include或cid引用。
SoapUI 发送带附件的 XML 请求(支持 MTOM 或 SWA)需要手动构造符合规范的消息结构,不能仅靠普通表单上传。核心在于正确设置请求的 Content-Type(如 multipart/related)、添加附件部分、并在 SOAP Body 中用 xop:Include 引用二进制内容。以下是具体操作方式:
确认协议支持并选择合适方式
MTOM 和 SWA 都是 SOAP 附件传输标准,但 SoapUI 原生对 MTOM 支持更完善(尤其 Pro 版),而 SWA(SOAP with Attachments)较老旧,需严格遵循 MIME 封装格式。建议优先使用 MTOM,除非服务端明确要求 SWA。
- MTOM:基于 XOP(XML-binary Optimized Packaging),SOAP Body 内保留 XML 结构,二进制内容单独作为 multipart part 存放,用
cid:引用 - SWA:整个消息为
multipart/related,SOAP XML 本身是第一个 part(type="text/xml"),附件是后续 part(如 type="application/octet-stream"),通过Content-ID关联
用 MTOM 方式发送(推荐)
SoapUI(开源版或 Pro)可自动处理 MTOM,前提是 WSDL 正确声明了 xs:base64Binary 参数并标注 xmime:expectedContentTypes,且请求使用「Raw」模式或启用 MTOM 选项。
- 在请求编辑区右键 → Select Request Style → MTOM/XOP(若灰显,说明 WSDL 未正确定义附件参数)
- 将附件字段(如
)的值设为文件路径,格式为:file://C:/path/to/file.jpg(注意双斜杠和绝对路径) - 确保项目设置中启用了 MTOM:Project → Properties → Enable MTOM 打勾
- 发送前检查 Raw 标签页,可见自动生成的
Content-Type: multipart/related; type="application/xop+xml"及多个 parts
手动构造 SWA 请求(无 WSDL 或需兼容旧服务)
当无法启用 MTOM 或服务只认 SWA 时,需切换到 Raw 模式,手工拼接 MIME 消息。关键点:边界符一致、Content-ID 匹配、SOAP part 的 Content-Type 为 text/xml,附件 part 的 Content-Type 和 Content-ID 要与 XML 中引用一致。
- 将请求类型改为 Raw,Content-Type 设为:
multipart/related; t
ype="text/xml"; start="" - 按 MIME 格式编写(示例含一个 JPG 附件):
--xyz123
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID:
test.jpg
--xyz123
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
Content-ID:
[二进制数据粘贴处 —— SoapUI 不支持直接粘贴二进制,需用脚本或 Base64 编码后用 text/plain + base64]
--xyz123-- - 实际中更常用 Base64 编码附件再内联(非真正 SWA,但服务端常兼容):把文件 Base64 编码后填入
...,此时 Content-Type 保持text/xml即可
验证与调试技巧
发送后务必检查 Raw 请求和响应,确认 multipart 结构完整、CID 引用匹配、附件大小未被截断。常见失败原因包括边界符缺失、Content-ID 多余空格、文件路径错误或编码不匹配。
- 启用 SoapUI 日志:File → Preferences → Log Viewer → 勾选 HTTP Logs,查看真实发出的字节流
- 用外部工具(如 Postman 或 curl)对比成功请求的 raw 格式,反向调整 SoapUI 的手工内容
- 如果服务返回 “Invalid MIME part” 或 “Content-ID not found”,重点检查 Content-ID 的尖括号是否完整(必须是
,不是xxx)
# 编码
# app
# 字节
# 工具
# curl
# ai
# stream
# postman
# 封装
# select
# include
# xml
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android GridView 滑动条设置一直显示状态(推荐)
Bootstrap整体框架之JavaScript插件架构
如何在建站主机中优化服务器配置?
Laravel如何实现API资源集合?(Resource Collection教程)
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
香港服务器租用每月最低只需15元?
如何快速搭建安全的FTP站点?
图册素材网站设计制作软件,图册的导出方式有几种?
javascript基于原型链的继承及call和apply函数用法分析
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Android自定义listview布局实现上拉加载下拉刷新功能
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
南京网站制作费用,南京远驱官方网站?
Laravel怎么实现模型属性的自动加密
Laravel如何实现API版本控制_Laravel版本化API设计方案
长沙企业网站制作哪家好,长沙水业集团官方网站?
北京网站制作的公司有哪些,北京白云观官方网站?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何用PHP快速搭建CMS系统?
如何确认建站备案号应放置的具体位置?
Java类加载基本过程详细介绍
iOS正则表达式验证手机号、邮箱、身份证号等
JS实现鼠标移上去显示图片或微信二维码
JavaScript中的标签模板是什么_它如何扩展字符串功能
jQuery validate插件功能与用法详解
如何在搬瓦工VPS快速搭建网站?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Java解压缩zip - 解压缩多个文件或文件夹实例
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
如何在阿里云虚拟服务器快速搭建网站?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel如何为API编写文档_Laravel API文档生成与维护方法
如何在腾讯云服务器快速搭建个人网站?
如何在VPS电脑上快速搭建网站?
如何在云主机上快速搭建多站点网站?
如何彻底卸载建站之星软件?
简单实现Android文件上传
Laravel如何记录自定义日志?(Log频道配置)
高防服务器如何保障网站安全无虞?
百度浏览器如何管理插件 百度浏览器插件管理方法
进行网站优化必须要坚持的四大原则
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel如何实现文件上传和存储?(本地与S3配置)
使用C语言编写圣诞表白程序
香港网站服务器数量如何影响SEO优化效果?
如何正确下载安装西数主机建站助手?
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何在腾讯云免费申请建站?


ype="text/xml"; start="