- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 wsdl,它会自动将额外的元素添加到 xml 中。为了使其符合不使用这些元素的外部 Web 服务。请参见下图: http://img406.imageshack.us/img406/1307/differencese.png左 = 红色元素需要移除 - 右 = 我需要它输出什么
我附上了创建信封和有效负载的代码。
Dim content As myProxy.Content = New myProxy.Content
Dim inputguid As String = Guid.NewGuid.ToString
Dim service As myProxy.WebService = New myProxy.WebService
Dim str As New System.Xml.XmlDocument
Dim payload As myProxy.Payload = New myProxy.Payload
'payload
str.LoadXml(xmlstr)
'manifest
service.payloadManifest = New myProxy.PayloadManifest
service.payloadManifest.manifest = New myProxy.Manifest() {New myProxy.Manifest}
service.payloadManifest.manifest(0).element = "GetVehicleServiceHistory"
service.payloadManifest.manifest(0).namespaceURI = ""
service.payloadManifest.manifest(0).contentID = "Content0"
service.payloadManifest.manifest(0).version = "2.01"
service.SoapVersion = SoapProtocolVersion.Soap11
service.UserAgent = "Jakarta Commons-HttpClient/3.1"
Dim usertoken As New Microsoft.Web.Services3.Security.Tokens.UsernameToken("userid", "password", Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendPlainText)
service.RequestSoapContext.Security.Tokens.Add(usertoken)
service.RequestSoapContext.Security.MustUnderstand = False
payload.content = New myProxy.Content() {content}
ReDim Preserve payload.content(0)
payload.content(0).Any = str.DocumentElement
payload.content(0).id = "Content0"
service.Url = "http://localhost:8080"
service.ProcessMessage(payload)
如有任何帮助,我们将不胜感激。
迈克尔
最佳答案
你可以写一个 SoapExtension .我过去这样做是为了从 SOAP 响应中清除非法字符,但您也可以使用它来修改您的请求。基本上,它会在发送 SOAP 包之前拦截它,或者在您收到它时,但在 .Net 反序列化它之前拦截它。
Stefan Goßner 有一篇旧博客文章解释了 how build a SoapExtension .您可以将代码放在 ProcessOutput
方法中。
缺点是您将 SOAP 消息解析为文本,但当然可以将其加载到 XDocument
或 XmlDocument
中(如果效果更好的话)。但您之后也会将其作为文本传递。
如果您使用的是 WCF,请查看 Intercept messages in a WCF Client ,因为您必须为 SOAP 拦截实现 IClientMessageInspector
。
希望这对您有所帮助。
关于.net - 从 header 中删除某些元素 - 由 WSE 3.0 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311987/
WSE (Web Services Enhancements) 上有一个旧代码。现在,在适用于 HTTPS 的服务的“沙盒”中,开始使用自签名证书。现在在沙箱中出现错误——无法创建 SSL/TLS 安
我一直在尝试使用 WCF 或 WSE 更改 SOAP 安全元素。 WCF:实现消息检查器并在 Beforerequestsent 中添加自定义代码。在后面的代码中设置以下自定义绑定(bind)后,我在
我一直在尝试使用 WCF 或 WSE 更改 soap 安全元素。 WCF:实现消息检查器并在 Beforerequestsent 中添加您的自定义代码。在后面的代码中设置了以下自定义绑定(bind)后
我对 WSE 和 WCF 都很陌生,我正在尝试使用 WCF 使用 Web 服务,但所有示例文档均适用于 VS2005 + WSE。此 Web 服务使用 WS-Security 1.0。我已经通过 Vi
我尝试为 WSE 3.0 服务创建 WCF 客户端。我已经将 WSE3.0 客户端用于相同的服务。这是它的配置: 服
如何使用 WCF 与老式 WSE 2.0 Web 服务进行通信? 最佳答案 首先,在我看来,WSE 2.0 和 WSE 3.0 都已过时,而不是“老派”。 其次,你“就去做吧”。添加服务引用并通过代理
.NET WSE 线程安全地从 WSDL 生成客户端 stub 吗? 当然,“线程安全”不一定是一个严格定义的术语,所以我至少对以下内容感兴趣: 同一个 stub 类的不同实例是否可由不同线程同时访问
是否可以使用 http.sys 将我自己开发的异常通过 Soap 发送到客户端?? 最佳答案 不幸的是,据我所知,答案是否定的。您不能在服务器端构建自己的自定义异常并期望通过 WSE 在客户端使用它们
尽管在 Visual Studio 2005 中的客户端项目上启用了 WSE 3.0,但我所做的 Web 引用总是以从 SoapHttpClientProtocol 派生的服务代理结束。我必须手动将继
我需要与使用 WSE 2.0 实现 WS-Security 和 DIME 的旧版 .NET Web 服务集成。问题是我需要从 Java 应用程序执行此操作。 我期望 Axis2 能够与 WS-Secu
我已经创建了一个 Web 服务,它有几个使用 .net 3.5 开发的方法。将访问 Web 服务的客户端将使用 .net 3.0。我被要求使此 Web 服务“安全”,并且在网上查看了很多选项。 第一个
我们有一个 Web 服务,其中包含 WSE 3.0 端点和 .NET Framework 4.5 上较新的 WCF 端点。 WCF 使用 basicHttpBinding。 问题是新的 WCF 绑定(
我正在尝试从 C++ 应用程序访问 .net Web 服务(内置于 vs 2008)。我正在使用 IXMLHttpRequest 访问该服务。以下是相关代码: MSXML::IXMLHttpRequ
我需要调用仅支持 DIME 的遗留 SOAP API , 但 DIME 在 WSE 3.0 中不受支持。 遗憾的是,支持 DIME 的 WSE 2.0 不支持与 Visual Studio 2005
我在发送安全 wse header 以使用 Web 服务时遇到问题,并且已经尝试了数十种使用 TargetProcess.com 中的此 Web 服务的方法,但我不确定我做错了什么。 (http://
我在从 WCF 客户端连接到第三方 WSE 3.0 Web 服务时遇到困难。我已经实现了此知识库文章中所示的自定义绑定(bind)类: http://msdn.microsoft.com/en-us/
为此,我在网上找遍了。我一直在做这件事,但我尝试使用其 Web 服务的供应商拒绝正式支持 WCF 作为一种使用方法。 我不是 Web 服务专家,所以我会尽我所能在最初的帖子中记录和解释,但无论如何,如
我已经成功创建了一个在不使用身份验证时可以正常工作的 WS 客户端。 但是,服务器 (WebSphere) 现在需要添加一个 ws-security 用户名 token ,我很难做到这一点。生成的 S
我正在使用 wsdl,它会自动将额外的元素添加到 xml 中。为了使其符合不使用这些元素的外部 Web 服务。请参见下图: http://img406.imageshack.us/img406/130
关于这个区域,我还有几个其他问题,但现在它们有点多余了。任何对他们的回答也将不胜感激,但这个问题是我目前主要关心的问题。 我遵循了很多关于 MTOM/XOP 如何在 WSE 3.0 中工作的示例,并且
我是一名优秀的程序员,十分优秀!