2011-03-30 25 views
0

我有一個服務提供商,他們的Web服務需要非標準的授權類型。WebService非標準授權類型

而不是Basic,Digest,NTLM等,它們需要「基本API訪問」。

我已經嘗試了下面的代碼,並使用Fiddler來檢查Web服務請求。

它似乎沒有任何自定義字符串可以用來

Binding avail = new Binding(); 
    avail.Url = "https://amer.webservicesxx.com/Availability"; 

    NetworkCredential netCredential = new NetworkCredential("abc", "def"); 
    Uri uri = new Uri(avail.Url); 

    CredentialCache cred = new CredentialCache(); 
    cred.Add(uri, "Basic API Access", netCredential); 
    avail.Credentials = cred; 

    SearchRsp response = avail.service(request); 

POST https://amer.webservicesxx.com/Availability HTTP/1.1

的User-Agent:Mozilla的/ 4.0(兼容; MSIE 6.0; MS Web服務客戶端 協議4.0.30319.1)
VsDebuggerCausalityData: uIDPo + CJPwpspBxKp939c ...
Content-Type:text/xml;字符集= UTF-8
的SOAPAction: 「」
主機:america.webservicesxx.com
的Content-Length:期望值:?100繼續

XML版本= 「1.0」 編碼=「UTF-8 「?>?soap:Envelope xmlns:soap =」http://schemas.xmlsoap.org/soap/envelope/「 xmlns:xsi =」http://www.w3.org/20 01/XMLSchema-instance 「 的xmlns:XSD =」 http://www.w3.org/2001/XMLSchema「> ... /SOAP:信封>

它缺少...

授權:基本API訪問/ dUFQSS04NDA0NTk2MDk6WiFyYzBuZDg0 ...

...在標題行。

如果我只使用"Basic",它會正確添加授權行,但會被服務提供商拒絕。

這是將Authorization:標題添加到Soap事務的正確語法嗎?

回答

0

我需要替換Web請求中的數據。

protected override System.Net.WebRequest GetWebRequest(Uri uri) 
{ 
    WebRequest request = base.GetWebRequest(uri); 
    request.Headers.Add("Authorization: Basic API Access dUFQSS04NDA0NT..."); 

    return request; 
} 

Web服務標準類別內。