我有一个服务提供商,他们的网络服务需要非标准的授权类型。
而不是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 Services Client 协议4.0.30319.1)
VsDebuggerCausalityData: uIDPo + CJPwpspBxKp939c ...
内容类型:text / xml;字符集= UTF-8
SOAPAction:“”主持人:america.webservicesxx.com
内容长度: 658
期望:100-继续?xml version =“1.0”encoding =“utf-8”?> ?肥皂:信封 的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” > ... ?/皂:信封>
缺少......
授权:基本API访问/ dUFQSS04NDA0NTk2MDk6WiFyYzBuZDg0 ...
...标题中的行。
如果我只使用"Basic"
,它会正确添加授权行,但会被服务提供商拒绝。
这是向Soap事务添加Authorization:
标头的正确语法吗?
答案 0 :(得分:0)
我需要替换网络请求中的数据。
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
WebRequest request = base.GetWebRequest(uri);
request.Headers.Add("Authorization: Basic API Access dUFQSS04NDA0NT...");
return request;
}
在Web服务引用类中。