这种情况,有一个现有的客户端,我需要构建一个客户端将要消耗的服务器。我不拥有客户,我无法改变它。客户端肥皂消息可以如下
如何让我的服务接受两个带圆圈的前缀。目前它只接受“c2b”前缀,并且不处理任何带有“ns1”前缀的请求。
答案 0 :(得分:4)
您正在将DTO(Class对象)传递给服务,但您的wcf服务无法识别确切的类。
因此,要使WCF接受任何前缀,只需添加具有适当对象位置的前缀即可。
您只需向xmlns
添加一个<soapenv:Envelope>
属性。
例如
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://cps.huawei.com/cpsinterface/c2bpayment" xmlns:c2B="http://cps.huawei.com/cpsinterface/c2bpayment">
答案 1 :(得分:2)
我没有时间尝试,但我的第一个想法可能是使用XmlNamespaceDeclarationsAttribute可能有效 - 你可以在你的根C2BPaymentConfirmationRequest类中提供它,并在你的构造函数中预先填充它“ ns1“指向”http://cps.huawei.com/cpsinterface/c2bpayment“。值得一试。如果有问题,请告诉我们。
答案 2 :(得分:2)
Shubham Sharma's answer 100%正确。
要添加更多解释,这些前缀只是您声明的命名空间的别名。他们没有任何意义。如果要使用ns1作为前缀,则只需将xmlns:c2b替换为顶部的xmlns:ns1即可。
在您的情况下,客户端不知道如何生成请求。也许最好建议他们使用一些基于wsdl的请求生成工具 - 比如SoapUI。