Even after many trials, the authentication was not working fine.
Finally I had to do it the old fashion way of specifying the authorization credentials in the header.
This scenario happens because WebClient doesn't send the Authorization header untill it receives a 401 status.
The code that failed:
string xml = @"<messages>......</messages> ; string url = new UriBuilder("http", "www.abc.com", 9443).ToString(); // create a client object using (System.Net.WebClient client = new System.Net.WebClient()) { client.Credentials = new NetworkCredential("user1", "password1"); // performs an HTTP POST string resp = client.UploadString(url, xml); txtResponse.Text = "Response:" + resp; }
The workaround:
string xml = @"<messages>......</messages> ; string url = new UriBuilder("http", "www.abc.com", 9443).ToString(); // create a client object using (System.Net.WebClient client = new System.Net.WebClient()) { client.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("user1:password1")); // performs an HTTP POST string resp = client.UploadString(url, xml); txtResponse.Text = "Response:" + resp; }
This comment has been removed by a blog administrator.
ReplyDelete