将基本身份验证添加到SOAP请求的标头 - Web服务

时间:2011-12-08 20:35:37

标签: .net asmx

我有来自wsdl的c#代理构建。 我正在尝试向请求标头添加基本身份验证。 我试图呼叫的网络服务不在c#中。 (php可能是)

使用fiddler,我可以看到“没有授权标题”

我的电话结果是:用户名/密码错误

以下是我添加到我的代理

的内容
protected override System.Net.WebRequest GetWebRequest(Uri uri){
    System.Net.HttpWebRequest request;
    request = (System.Net.HttpWebRequest)base.GetWebRequest(uri);
    if (PreAuthenticate){
       System.Net.NetworkCredential networkCredentials =
       Credentials.GetCredential(uri, "Basic");
       if (networkCredentials != null)
       {
           byte[] credentialBuffer = new System.Text.UTF8Encoding().GetBytesnetworkCredentials.UserName + ":" + networkCredentials.Password);
           request.Headers["Authorization"] = "Basic" + Convert.ToBase64String(credentialBuffer);>
       }
       else
       {
           throw new ApplicationException("No network credentials");
      }
   }
   return request;
}

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,如果你可以使用WCF,我建议使用它,但如果你,像我一样也不允许,那么你可以使用这个实现。 http://geekswithblogs.net/SunnyCoder/archive/2009/03/15/username-password-amp-ws-security-with-silverlight.aspx

如果您尝试自定义xml附加,则会遇到各种问题。仅在无法使用WCF时才使用此选项。 Silverlight支持通过HTTPS进行身份验证我相信没有WCF,但普通HTTP的身份验证已移至WCF。