第三十章 使用 MTOM 进行附件 - 控制 MTOM 打包

文章目录

  • 第三十章 使用 MTOM 进行附件 - 控制 MTOM 打包
  • 控制 `MTOM` 打包
  • 示例
    • Web Service
    • `Web Client`

第三十章 使用 MTOM 进行附件 - 控制 MTOM 打包

控制 MTOM 打包

默认情况下,创建 MTOM 包时,它使用以下规则:

  • 它以内联方式输出二进制字符串( %Binary或在 %xsd.base64Binary)。
  • 它使用附件输出二进制流。

可以使用 MTOM 属性参数来更改此默认值:

  • 1 表示将此属性作为附件输出。
  • 0 表示以内联方式输出此属性。

Web 服务或 Web 客户端未使用 MTOM 时,MTOM 属性参数不起作用。

此外,此属性参数对 Web 服务的 WSDL 没有影响。

示例

此示例展示了 Web 服务接收二进制文件并将其发送回调用者。

相应的 Web 客户端发送一个带有硬编码文件名的文件,从 Web 服务接收相同的文件,然后使用新名称保存它以证明它已成功发送。

Web Service

Web服务如下:

/// Receive an attachment and send it back
Class MTOM.RoundTripWS Extends %SOAP.WebService
{///  Name of the web service.
Parameter SERVICENAME = "RoundTrip";///  SOAP namespace for the web service
Parameter NAMESPACE = "https://www.roundtrip.org";///  Receive an attachment and send it back
Method ReceiveFile(attachment As %GlobalBinaryStream) As %GlobalBinaryStream [ WebMethod ]
{Set ..MTOMRequired=1Quit attachment
}}

Web Client

生成的 Web 客户端 (MTOMClient.RoundTripSoap) 包含方法 ReceiveFile(),该方法调用同名的 Web 方法。此方法最初如下:

Method ReceiveFile(attachment As %xsd.base64Binary) As %xsd.base64Binary 
[ Final, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{Quit ..WebMethod("ReceiveFile").Invoke($this,"https://www.roundtrip.org/MTOM.RoundTripWS.ReceiveFile",.attachment)
}

由于我们发送的文件可能超出字符串长度限制,因此我们对方法签名进行如下调整:

Method ReceiveFile(attachment As %GlobalBinaryStream) As %GlobalBinaryStream 
[ Final, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{Quit ..WebMethod("ReceiveFile").Invoke($this,"https://www.roundtrip.org/MTOM.RoundTripWS.ReceiveFile",.attachment)
}

默认情况下,Web 客户端不需要 MTOM;也就是说,未定义 MTOMREQUIRED 参数。

为了使用这个代理客户端,我们创建以下类:

Include %systemIncludeClass MTOMClient.UseClient
{/// For this example, hardcode what we are sending
ClassMethod SendFile() As %GlobalBinaryStream
{Set client=##class(MTOMClient.RoundTripSoap).%New()Set client.MTOMRequired=1//reset location to port 8080 to enable tracingSet client.Location="https://devsys:8080/csp/mysamples/MTOM.RoundTripWS.cls"//create fileSet filename="c:\sample.pdf"Set file=##class(%Library.FileBinaryStream).%New()Set file.Filename=filename//create %GlobalBinaryStreamSet attachment=##class(%GlobalBinaryStream).%New()Do attachment.CopyFrom(file)//call the web serviceSet answer=client.ReceiveFile(attachment)//save the received file to prove we made the round trip successfullySet newfilename="c:\roundtrip"_$h_"sample.pdf"Set newfile=##class(%Library.FileBinaryStream).%New()Set newfile.Filename=newfilenameDo newfile.CopyFromAndSave(answer)Quit answer
}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式之日志系统平台ELK

ELK解决了什么问题 我们开发完成后发布到线上的项目出现问题时(中小型公司),我们可能需要获取服务器中的日志文件进行定位分析问题。但在规模较大或者更加复杂的分布式场景下就显得力不从心。因此急需通过集中化的日志管理,将所有服务器上的日志进行收集汇总。所以ELK应运而生…

HTML静态网页成品作业(HTML+CSS)——中华传统美德介绍网页(2个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,表格布局,未使用Javacsript代码,共有2个页面。…

学习java第一百零二天

Spring 面向切面编程(Spring AOP) 通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对…

YOLOv10涨点改进创新MSAM注意力,通道注意力升级,魔改CBAM

目录 1,YOLO v10介绍 1.1 C2fUIB介绍 1.2 PSA介绍 1.3 SCDown 2.自研MSAM 2.1 自研MSAM注意力介绍 3.MSAM如何加入到YOLOv8 3.1 MSAM加入ultralytics/nn/attention/MsAM.py 3.2 修改tasks.py1)首先进行引用定义 3.3 yolov10n-MSAM.yaml 3.4 yolov10n-PSMSAM.yaml 改…

Chain-of-Thought真能提高大模型的推理能力吗?

用于提高大语言模型(LLM)的推理、规划、算术等能力的思维链(Chain-of-Thought、CoT)技术,真的能帮助LLM一步步地回答问题吗?美国亚利桑那州立大学的研究人员近期发表了一篇论文[1],论文根据实验…

net start mysql服务名无效

问题背景 起因是我的电脑因为停电烧坏了系统固态硬盘,再新装系统后,之前的MySQL服务无法通过下面的命令启动。 net start mysql # 报错:服务名无效 报错:服务名无效 报错信息 未找到:在Windows服务中找不到MySQL 找…

关于HTTP劫持,该如何理解、防范和应对

一、引言 HTTP劫持(HTTP Hijacking)是一种网络安全威胁,它发生在HTTP通信过程中,攻击者试图通过拦截、篡改或监控用户与服务器之间的数据流量,以达到窃取敏感信息或执行恶意操作的目的。今天我们就来详细了解HTTP劫持…

Google Earth Engine(GEE)——计算闪闪红星的ndvi的值和直方图(时序分析)

函数: ui.Chart.image.histogram(image, region, scale, maxBuckets, minBucketWidth, maxRaw, maxPixels)

数据库 | 事务

事务:要么做要么不做 开始语句:BEGIN TRANSACTION 结束语句:COMMIT(正确) ROLLBACK(错误) 4个性质:ACID A(atomicity) 原子性:一个事务要么不做…

AWS无服务器 应用程序开发—第十三章 小结2

电子邮件发送(Amazon SES、Amazon SNS、AWS Lambda) 注意点和易错点 SES 配置:确保域名验证和 DKIM 签名配置正确,避免邮件被标记为垃圾邮件。 SNS 配置:订阅和发布权限需要配置正确。 Lambda 权限:确保 Lambda 函数有正确的执行权限。 移除沙盒:需要大量发送邮件的时…

Ant Design Vue 动态表头和数据填充

创作动态表头和数据填充的前端应用:使用 Ant Design Vue 在现代前端开发中,动态表格是一个常见而且非常有用的功能。Ant Design Vue作为一个优秀的UI组件库,为开发者提供了丰富的组件和API来实现复杂的前端需求,包括动态表头和数…

深入探究:Java SE中的数组高级用法

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Rewrite the Stars

文章目录 摘要1、引言2、相关工作3、重写星操作3.1、单层中的星操作3.2、扩展到多层3.3、特殊情况3.4、实证研究3.4.1、星操作的实证优越性3.4.2、决策边界对比3.4.3、扩展到无激活函数的网络 3.5、开放讨论与更广泛的影响 4、概念验证:StarNet4.1、StarNet架构4.2、…

《Windows API每日一练》4.4 绘制填充区域

本节讲述如何填充由线条构建的封闭区域。当我们初始化一个窗口类时,往往已经指定了窗口的背景色画刷(WHITE_BRUSH),即默认的填充封闭区域背景的画刷。如果我们想更换背景颜色,需要选入其他系统预定义的画刷&#xff08…

Serializable 序列化详解

文章目录 一、什么是序列化二、Serializable 简介三、Serializable 序列化测试四、serialVersionUID 的作用五、serialVersionUID 默认 1L 和 64 位的哈希字段有什么区别?六、static 和 transient 字段 一、什么是序列化 序列化就是将对象属性转变为二进制数据。用…

LLVM 中 的 pass 及其管理机制

概述 LLVM 编译器框架的核心概念是任务调用和执行 编译器开发者将IR分解为不同的处理对象,并将其处理过程实现为单独的pass类型。在编译器初始化,pass被实例化,并被添加到pass管理中 pass 管理器(pass manager) 以流水线的方式将各个独立的…

DOM 总结

DOM 总结 1. 引言 文档对象模型(DOM,Document Object Model)是一种跨平台和语言独立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM 是万维网联盟(W3C)的标准,被广泛应用于网页设计和开发中。本文将总结 DOM 的基本概念、核心功能和实际应用。 …

【安装笔记-20240616-Linux-为 OpenWrt 自动挂载 Windows 主机共享目录】

安装笔记-系列文章目录 安装笔记-20240616-Linux-为 OpenWrt 自动挂载 Windows 主机共享目录 文章目录 安装笔记-系列文章目录安装笔记-20240616-Linux-为 OpenWrt 自动挂载 Windows 主机共享目录 前言一、软件介绍名称:cifsutils主页官方介绍特点 二、安装步骤测试…

华为校招机试 - 排列组合的回文字符串(20230515)

题目描述 如果一个字符串和它反转后的字符串相同,我们称这个字符串为回文字符串。 如:"aba"是一个回文字符串,"abb"不是一个回文字符串(长度为 1 的字符串也是回文字符串)。 要给定一个字符串,其长度范围为:[1, 1000),返回其通过重新排列组合后…

exit和_exit函数和atexit函数

相对于return函数,exit和_exit是用于专门退出进程的函数,而return不是用于专门退出进程的,只是执行mian函数时,return可以退出进程。(return退出当前函数执行的栈空间,并返回当前函数执行的结果&#xff09…