2011-12-08 85 views
0

我有一個來自wsdl的c#代理構建。 我正在嘗試將基本身份驗證添加到請求的標頭。 我試圖調用的webservice不在c#中。 (PHP的可能)將基本身份驗證添加到SOAP請求的標頭 - WebService

隨着小提琴手,我可以看到,「沒有授權頭存在」

而且我的電話的結果是:錯誤的用戶名/密碼

以下是我已經添加我的代理

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

你不應該一直使用標題。只需設置request.Credentials? –

+0

這個webservice的設計者說,在頭文件中發送證書是強制性的。我甚至嘗試了request.Crendentials。 – mappy

+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。

+0

我從設計師那裏得到了一個樣本,用php製作。它使用soapclient和$頭文件 這裏是一個樣本 $ headers =「」nsl:username xmlns:nsl = \「$ namespace \」> password setHeaders($ headers) 我已經構建了一個Win應用程序來測試調用,而且Fiddler沒有在頭文件中看到有關crendentials的任何信息,可能我應該完全重寫頭文件,就像我在幾個網站上看到的那樣 我要去看看WCF – mappy

相關問題