【问题标题】:Is there a way to insert "wsmp:" in to the soap method request in c#?有没有办法将“wsmp:”插入到c#中的soap方法请求中?
【发布时间】:2011-12-24 07:31:38
【问题描述】:

我需要构建一个可以使用现有的使用 wsse 安全性的 java weblogic web 服务的 c# 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>`

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

【问题讨论】:

  • 使用 WCF 时发生了什么?它应该可以工作。 WSE 不太可能也能正常工作,因为它并不完全符合标准。此外,如果您必须做一些不直接支持的事情,WCF 比 WSE 可扩展性强得多,并且得到积极支持,拥有庞大的用户社区来帮助您。

标签: c# soap wse


【解决方案1】:

看起来在 C# 端生成的 xml 确实是有效的,所以我猜是 Java 服务器的特殊性将这个要求强加给了你。

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

干杯, 阿纳什

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 2010-12-04
    • 2021-03-23
    • 2015-07-23
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多