问题标签 [xop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - WSE 3.0 - 字节数组被编码为 Base64 而不是“MTOM-ing”为二进制
关于这个区域,我还有其他几个问题,但现在它们有点多余。对他们的任何回答也将不胜感激,但这个问题是我目前主要关心的问题。
我已经关注了许多关于 MTOM/XOP 如何在 WSE 3.0 中工作的示例,并且完全按照看起来需要的方式设置了我的项目。我有一个字节数组字段,它被指定为 DataType:-base64Binary。在此我放置了我要添加的附件的字节数组。当我运行应用程序并检查请求时,数据被内联编码为 base64,即没有 XOP Include 元素和相关的 MIME 部分。
我对 WSE 3.0 中的 MTOM 的理解是,在编码时,它将采用指定为 base64Binary 的任何字段并将其编码为二进制并将其移动到 MIME 部分,用 XOP Include 元素替换它。也就是说,它刚刚奏效。但是我已经在参考文件中将服务设置为继承Microsoft.Web.Services3.WebServicesClientProtocol
并将RequireMtom
标志设置为 true,但它仍然没有正确编码。
我在这里错过了什么吗?是否应该执行任何其他步骤才能使其正常工作?
编辑:在第 100 次查看我的代码后,我想知道这是否可能是因为我必须在运行 ProcessMessage 方法之前序列化有效负载。这听起来像是一个问题吗?我们序列化的原因是因为我们必须使用的方法接受一个具有内容属性的“有效负载”参数,这个内容属性是一个 XMLElement 属性,我们可以获得它的唯一方法是序列化所需的类。但这是否会阻止 MTOM 识别 base64 字段的数据类型,因此不会使用 MIME 部分和 XOP 转换为二进制?现在只是真的抓着稻草。
编辑 2:虽然我在下面有一个解决方案,但第三方公司现在说我们的命名空间前缀是错误的!我们有类似的东西<q1:Attachment xmlns:q1="http://whatever" />
,他们要求这样做<s:Attachment xmlns:s="http://whatever" />
。我要疯了还是没关系?有没有办法告诉它如何分配命名空间前缀?
asp.net - Client found response content type of 'multipart/related; type="application/xop+xml"
When I am calling Web service method, and getting this error,
The request failed with an empty response."
I m exacting "application/soap+xml"
now , but
how can I get "application/xop+xml"
response?.
I have to solve this problem,
Thanks for any advice...
c# - 创建 MTOM 并对其进行反序列化
我一直在使用一些代码通过使用MSDN中的代码来创建 MTOM 。
似乎有一个错误,我不明白问题出在哪里,因为论坛上的一位用户指出有一个错误。
文件 (JPEG) 数据在反序列化后损坏。下面列出了完整的代码。
如果有人可以帮助我指出问题所在,我将不胜感激。我是 XOP/MTOM 的新手,发现很难找出错误可能出在哪里。序列化或反序列化。
谢谢
java - 如何在 Metro 下解析带有 MTOM 附件的入站消息而不提取所有附件数据?
使用 JAX-WS-RI 或 Metro,我可以使用 com.sun.xml.ws.api.server.AsyncProvider 接口编写 WebService。
我可以选择获取包括 SOAP 标头在内的整个消息
然后我可以写一些东西来解析消息并相应地处理
然而,这样做的部分原因是为了使现有的基于 XML 的应用程序适应 SOAP 堆栈。该应用程序为它所接受的消息定义了一套完整的模式,并且很容易生成一个 WSDL 来定义服务。
对于小的 XML 消息,这一切都很好。
但是,如果我希望在一些消息庞大的操作中以更面向流的方式处理 XML,我会遇到两个使用 MTOM 附件的问题。我将我的 Provider 的设置更改如下;
我将适当的 MTOM 策略添加到我的 WSDL;
并酌情为该操作声明我的消息模式
适当设置绑定;
我生成客户端并修改代码
并且 http 转储显示数据正在以多部分 mime 的形式发送,并在“消息正文”中使用适当的 xop:include 元素
在服务器内部,我得到一个附件;
然后我希望顶部解析传入的消息并获取批量附件的上下文 - 例如包含它的元素的名称 - 但不是批量附件本身,YET;
希望附件解析器还没有读取所有输入的 HTTP 流,或者如果它已经将它分块到一个文件中,然后我可以在其中逐块读取它。问题是我找不到一种解析 Message 的方法,它不会将传入的消息转换为附件中的 base64 编码数据。在我得到指示元素开始的 SAX/StaX 事件后,它后面跟着一个字符事件,它是 base64 编码的数据。查看 StreamMessage 的代码,无法“插入”任何 XMLReader 或 XMLStreamReader 等。在 Message 已经绑定到的现有 XMLStreamReader 的“前面”(并不令人惊讶,因为我们正在处理消息)。但是那个 XMLStreamReader 实现是一个 com.sun.xml.ws.encoding.MtomCodec$MtomXMLStreamReaderEx ,它总是' 将一行中的附件解包到内存中。无法对 com.sun.xml.ws.encoding.MtomCodec 类进行参数化,以便它不会首先将事件传递给其内部的 MtomXMLStreamReaderEx 类,该类将内联附件解包。
我尝试将附件读入一个临时文件,然后将消息上下文附件替换为 FileDataSource,但由于 Metro 忽略了这些,因此只会使原始 DataSource 引发 ReadOnce 类型错误。
我还尝试通过将注释设置为禁用来关闭提供程序中的 MTOM;
然后删除它,然后删除 StreamingAttachment 注释无济于事。我还在 sun-jaxws.xml 文件中为它的端点元素设置了 enable-mtom="false" 属性,同样无济于事;似乎 xop:Include 解析是硬连线的。我不想更改 wsdl,因为我确实希望客户尽可能使用 MTOM。(但请参阅下面的我的 swaRef 答案)
如果我使用 swaRef,我可以让 Metro 做我想做的事,但我的理解是 MTOM 是获得支持的协议?使用 swaRef 我必须编辑 WSDL ;
我还必须生成一个新客户端并以不同的方式调用 sendBulk 方法;
但是现在当我解析数据元素时,我得到了相应的 cid,然后我可以根据需要使用它来检索附件;
因此,对于 MTOM 和 Metro,尽管附件可能还没有被读取到我解析数据元素的程度,或者确实以块的形式有效地流式传输到临时文件,但我无法读取输入消息的“其余部分”没有将整个依恋读入记忆中,这似乎是自我挫败?除了倾倒 Metro - 建议重新:Axis,欢迎 CXF - 有没有人发现这个问题的任何方法?
记录了一个功能请求。
c - AMD xop 检查支持
我有下一个问题:我使用一些说明
进行了一些与 xop 检查相关的测试。
而且我必须只在处理器上运行这个测试。
如何在编译时检查我的处理器是否支持指令? Bulldozer (xop)
Bulldozer
xop
语言: C
,操作系统: Linux
;
wcf - WCF 客户端与 Java WS 通信,异常:内容类型 application/xop+xml;响应消息的 type="application/soap+xml"
我在与 Java WS 交谈时遇到问题。我使用“wsHttpBinding”绑定客户端证书进行身份验证,消息编码设置为“文本”,.net 框架为 4.0。服务器端是 Java,我无法控制它。连接正在通过 Fiddler 进行代理(这就是我在网络上看到请求的方式,比跟踪“System.Net”更加用户友好)。
我得到的异常如下:
内容类型application/xop+xml;响应消息的 type="application/soap+xml" 与绑定的内容类型不匹配(application/soap+xml; charset=utf-8)。
如果我将消息编码更改为“Mtom”,则异常会更改:
内容类型application/xop+xml;响应消息的 type="application/soap+xml" 与绑定的内容类型不匹配(multipart/related; type="application/xop+xml")。
服务器接受请求的“文本”和“Mtom”消息编码,响应始终相同。这是我从服务器得到的原始响应:
从我一直在阅读的所有文档中,返回的响应介于常规 SOAP 消息和 MTOM 消息之间。我这样说是因为我看到的每个示例都说 MTOM 请求和响应使用 MIME 作为通信的信封:常规 SOAP 消息被封装在 XOP 包中,然后这个 XOP 消息被 MIME 封装。甚至 W3C 建议也将 MIME 用于 XOP 包:W3C: XML-binary Optimized Packaging。此链接的摘录:
如果我尝试使用工具“soapUI”(用 Java 编写,可从“www.soapui.org”获得)调用 Web 服务,则成功执行服务调用并且解析响应没有任何问题。
仅供参考,这是来自MSDN WCF 论坛的交叉帖子。但还没有回复。
任何想法表示赞赏,在此先感谢,
亚历克斯
ruby-on-rails-3 - Rails 的 MTOM/XOP 实现
我们的 rails 应用程序需要接收和解析带有 MTOM/XOP 附件 ( http://www.w3.org/TR/xop10/ ) 的 SOAP 请求。是否有已知的轨道解决方案?
这是一个请求示例(取自上面的链接):
Rails 成功解析了简单的多部分请求,但看起来它完全不知道如何处理 MTOM 附件,我们即将编写自己的解析器。谢谢!
ios - 在 iOS 中使用 MTOM 通过 Soap 消息上传文件
我在这里找到了通过 Soap 消息上传文件的详细信息。但是我还有另一个问题,如果 Soap 中有大文件,那么它会产生内存问题,导致内存中的文件加载以通过Soap 消息发送。
我阅读了有关 MTOM(消息传输优化机制)的信息。“当您使用 MTOM/XOP 优化SOAP 消息时,XOP处理将其序列化为 MIME Multipart/Related 消息。XOP 处理从SOAP 消息中提取base64Binary数据并将其打包为MIME消息中的单独二进制附件,在类似于电子邮件附件的方式”
我在这里找到了如何在 Java 中使用这种方法Soap with Attachments and MTOM in Java
现在我有两个问题:-
- 通过在iOS中使用MTOM/XOP方法,我们可以减少或解决上面解释的内存问题。
- 在编程中我们如何在iOS中使用MTOM/XOP方法。
任何帮助都会得到帮助。在此先感谢。
java - 如何使用 java 解析 XOP/MTOM SOAP 响应?
我只想知道,是否有任何简单的方法来解析 MTOM/XOP SOAP 响应。问题是我使用纯 HTTP 发送肥皂消息和 javax.xml 来解析响应。但是有些服务用 mulipart/related 回应我,它需要更复杂的逻辑来解析它(性能很重要)。所以我想知道我是否可以以某种方式利用 apache cxf、apache axiom 或任何其他库来解析 MTOM/XOP SOAP 响应?
xsd - 如何定义允许 base64 内容或 xop:Include 元素的 XML 模式元素?
我有一个 XML 模式,它定义了一个元素,该元素可能是 base64 文本或 xop:Include 元素。目前,这被定义为 base64Binary 类型:
当我插入 xop:Include 元素时,它看起来像这样:
但这会产生 XML 验证错误(我使用的是 .NET 验证器):
元素“mds:xml-schema:soap11:PackageBinary”不能包含子元素“ http://www.w3.org/2004/08/xop/include:Include ”,因为父元素的内容模型仅为文本。
这是有道理的,因为它不是 base64 内容,但我认为这是常见的做法......?有没有办法在架构中支持这一点?(我们有支持这种语法的现有产品,但我们现在正在添加验证。)