开发者

WebService non-standard Authorization Type

I have a service provider that requires a non-standard Authorization Type for their web service.

Instead of Basic, Digest, NTLM, etc., they require "Basic API Access.".

I have tried the code below and used Fiddler to check the web service request.

It does not seem that any custom strings can be used

    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 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.1)

VsDebuggerCausalityData: uIDPo+CJPwpspBxKp939c...

Content-Type: text/xml; charset=utf-8

SOAPAction: ""

Host: america.webservicesxx.com

C开发者_开发知识库ontent-Length: 658

Expect: 100-continue

?xml version="1.0" encoding="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:Envelope>

It is missing the ...

Authorization: Basic API Access/dUFQSS04NDA0NTk2MDk6WiFyYzBuZDg0...

...line in the header.

If I just use "Basic" it adds the Authorization line properly, but is rejected by the service provider.

Is this the correct syntax to add an Authorization: header to the Soap transaction?


I needed to replace data in the web request.

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

     return request; 
 }

inside the web service reference class.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜