有没有办法在c#中的soap方法请求中插入“wsmp:”?

时间:2011-12-22 22:04:38

标签: c# soap wse

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

有关客户端,我使用C#与Microsoft.Web.Services3在2010年的VisualStudio我知道Web.Services3已被弃用,但我无法找到一个WCF的解决方案,工作在那里我可以添加所需的WSSE:安全标签,以及Web服务所需的顺序。

使用Web.Service3,生成的soap请求不包含soap正文中所需的soap属性标记。使用soapUI进行测试,工作和非工作请求之间的唯一区别是soap体中缺少“wsmp:”标记。如果我能找到一种方法将“wsmp:”插入到soap body的method标签中,那么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>`

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

1 个答案:

答案 0 :(得分:0)

看起来在C#end生成的xml确实有效,所以我想Java服务器的特性正在迫使你这个要求。

我不知道WSE库的内部足以强制库使用特定的xml名称空间前缀,但这里有一种方法我成功地用我认为合适的方式重写SOAP xmls:{ {3}}

干杯, Anash