如何将基本凭据(ID,密码)发送到soap标头中的Web服务?

时间:2017-05-15 17:19:47

标签: vb.net soap webclient networkcredentials

我有一个新的网络服务,我正在设置呼叫,提供商告诉我,我需要在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和密码?

0 个答案:

没有答案