让我先说明我知道前缀对于遵循标准的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#控制台测试应用程序,我尝试修改限定和非限定设置,但没有添加前缀。
答案 0 :(得分:0)
我能在这里找到一个好的解决方案Intercept SOAP messages from and to a web service at the client
这对于其他想要做同样事情的人来说非常有效。
答案 1 :(得分:0)
我认为您必须为您的班级搜索提供目标名称空间。