0

我需要构建 ac# web 客户端,它可以使用现有的使用 wsse 安全性的 java weblogic web 服务。更改现有的 java weblogic web 服务以使用 C# 不是一种选择。我希望很容易找到解决方案。

对于客户端,我在 VisualStudio 2010 中将 c# 与 Microsoft.Web.Services3 一起使用。我知道 Web.Services3 已被弃用,但我找不到可以添加所需 wsse:Security 标记的 WCF 解决方案,并且按照 Web 服务所需的顺序。

使用Web.Service3,生成的soap 请求在soap 主体中不包含需要的soap 属性标签。使用soapUI 进行测试,工作请求和非工作请求的唯一区别是soap 主体中缺少“wsmp:”标签。如果我能找到一种方法将“wsmp:”插入到肥皂主体的方法标记中,那么 c# 请求将起作用。

在soap 正文中,它缺少Web 服务定义的soap 标头标记“wsmp:”。有没有办法在 C# 中将此标签插入到客户端请求中?

这是需要的身体——

`<soapenv:Body>
<wsmp:getForm xmlns:wsmp="http://www.microstrat.com/wsmpServices/1.0">
<wsmp:documentid><documentid>8502</documentid><formnumpacketid /></wsmp:documentid>
</wsmp:getForm>
</soapenv:Body>`

这是生成的主体——注意 getForm 而不是 wsmp:getForm 标签:

`<soapenv:Body>
<getForm xmlns="http://www.microstrat.com/wsmpServices/1.0">
<documentid xmlns=""><documentid>8502</documentid><formnumpacketid /></documentid>
</getForm>
</soapenv:Body>`

关于如何从生成的内容到需要的内容的任何帮助或指示?

4

1 回答 1

0

看起来在 C# 端生成的 xml 确实是有效的,所以我猜这是 Java 服务器的特殊性迫使你这样做。

我不太了解 WSE 库的内部结构,无法强制库使用特定的 xml 命名空间前缀,但这是我成功使用的一种方法,以我认为合适的方式重写 SOAP xml:Modifying SOAP requests with获取网络请求

干杯,阿纳什

于 2011-12-23T18:03:50.223 回答