Web服务XML前缀

本文关键字:前缀 XML 服务 Web | 更新日期: 2023-09-27 18:05:19

首先,我知道前缀对于遵循标准的xml不重要。我被迫使用一个web服务,它要求请求看起来像这样

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prefix="http://www.url.com">
<soapenv:Header/>
<soapenv:Body>
  <prefix:Search>
     <SearchCriteria>
        <registrationStatus>A</registrationStatus>
        <startDate/>
        <endDate/>
     </SearchCriteria>
  </prefix:Search>
</soapenv:Body>
</soapenv:Envelope>

当我生成请求时它最终看起来像这样

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.url.com">
<soapenv:Header/>
<soapenv:Body>
   <Search (also tried here xmlns="http://www.url.com")>
      <SearchCriteria>
         <registrationStatus>A</registrationStatus>
         <startDate/>
         <endDate/>
      </SearchCriteria>
   </Search>
</soapenv:Body>
</soapenv:Envelope>

因为前缀缺失,我得到一个错误,说它找不到搜索子。使用fiddler,我用一百万种不同的方式重新组合了这条消息,除非我为它添加前缀和名称空间,否则都失败了。我不拥有web服务,所有者不会做出改变,所以我一直在努力弄清楚它。

我的问题是如何添加前缀和名称空间的请求?我已经添加了服务到我的c#控制台测试应用程序使用添加服务引用,我尝试修改合格和不合格的设置,但没有添加前缀。

Web服务XML前缀

我能够在这里找到一个很好的解决方案拦截来自和发送到客户端的web服务的SOAP消息

这对于任何想要做同样事情的人来说都是完美的

我认为你必须为你的类搜索提供targetnamespaces