I\'m attempting to make requests to a client\'s web service (I don\'t know the underlying platform at the client). I\'ve consumed the client\'s WSDL in Visual Studio 2010 using
There are a couple of changes to make.
Firstly, there is a handy constant HttpRequestHeader.Authorization
.
Secondly, are they expecting the header to be Base64 Encoded - this is normally required for basic authentication.
WebClient.Headers.Add(HttpRequestHeader.Authorization,
"Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("12345678901234567890")));
I am writing this for whom that has this problem now. As in preceding answers mentioned inheritance hierarchy goes up to WebClientProtocol
class, this class has a ICredentials
property, simply set this property by a NetworkCredential
instance as below:
YourServis.Credentials = new NetworkCredential("UserName", "Password", "Domain");
I think taht is simplest way without changing Reference.cs or adding headers.
The above response was on the right track, but it just had to be in a different location.
I added this to my web reference proxy class that .Net generated:
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest req = (HttpWebRequest)base.GetWebRequest(uri);
req.Headers.Add(HttpRequestHeader.Authorization,
"Basic " + "12345678901234567890");
return req;
}
A Web Reference proxy class extends System.Web.Services.Protocols.SoapHttpClientProtocol. This class contains a call to System.Net.WebRequest.GetWebRequest(Uri uri). A WebRequest allow us to set specific headers on the request when the proxy class' methods are invoked.
Thanks for your help!