Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
233 views
in Technique[技术] by (71.8m points)

c# - Missing Basic HTTP authentication entry in HTTP request header

I have the following code:

WebClient client = new WebClient();
String un = "Username";
String pw = "Password";
client.Credentials =  new System.Net.NetworkCredential(un,pw);
client.DownloadFileCompleted +=
            new AsyncCompletedEventHandler(downloadFileCompleted);
client.DownloadFileAsync(new Uri(url), Config.LocalDir + @"datasupportData.xml");

Using NetworkMonitor on the server I receive the following:

Http: Request, GET /audiClave/REST/en/actions 
Command: GET
URI: /audiClave/REST/en/actions
ProtocolVersion: HTTP/1.1
Host:  210.xxx.xxx.xxx:8080
Connection:  Keep-Alive
HeaderEnd: CRLF

No Authentication entry. What am I missing?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try the old fashioned way:

string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(un + ":" + pw));
client.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;

IIRC WebClient doesn't send the Authorization request header until it gets a challenge from the server with 401.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...