我有一个新的网络服务,我正在设置呼叫,提供商告诉我,我需要在soap标头中包含基本凭据,这是我之前没有做过的事情。以下是他们提供的示例:
<soapenv:Envelope xmlns: soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>userid</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxxx</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
blah blah blah
</soapenv:Body>
</soapenv:Envelope>
我通过引用他们提供的wsdl和xsd文件创建了我的代理类。在实例化代理实例后,我向服务实例添加了NetworkCredential
,指定不使用默认凭据,并将其指向example.com(因为我还没有访问真正的Web服务)
osvc.Credentials = New Net.NetworkCredential("xxxxx", "yyyyy")
osvc.UseDefaultCredentials = False
osvc.Url = "http://www.example.com"
检查服务实例的内容确实会显示带有id和密码的新凭据。
启动Fiddler并调用服务方法。当然,调用失败,因为example.com将返回html,而不是xml,但我想检查发送的请求。 ID和密码不在消息中:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
blah blah blah
</soap:Body>
</soap:Envelope>
我做错了什么或不理解?如何在soap标头中发送我的ID和密码?