Web服务XML前缀

时间:2014-05-25 18:41:45

标签: c# xml web-services soap

让我先说明我知道前缀对于遵循标准的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我已经以百万种不同的方式重新组合了这个消息,除非我为它添加前缀和命名空间,否则都会失败。我没有自己的网络服务,所有者也不会做出更改,所以我一直试图解决这个问题。

我的问题是如何在请求中添加前缀和命名空间?我已经使用添加服务引用将服务添加到我的c#控制台测试应用程序,我尝试修改限定和非限定设置,但没有添加前缀。

2 个答案:

答案 0 :(得分:0)

我能在这里找到一个好的解决方案Intercept SOAP messages from and to a web service at the client

这对于其他想要做同样事情的人来说非常有效。

答案 1 :(得分:0)

我认为您必须为您的班级搜索提供目标名称空间。