Chỉnh sửa: Tôi muốn quay lại để lưu ý rằng vấn đề không phải là kết thúc của tôi chút nào, mà là với mã ở phía bên kia của công ty.Webclient/HttpWebRequest với xác thực cơ bản trả về 404 không được tìm thấy cho URL hợp lệ
Tôi đang cố gắng để kéo lên một trang bằng cách sử dụng Xác thực cơ bản. Tôi tiếp tục gặp lỗi 404 Trang không tìm thấy. Tôi có thể sao chép và dán url của tôi vào trình duyệt và nó hoạt động tốt (nếu tôi không đăng nhập vào trang web của họ đã được nó bật lên một hộp thông tin xác thực, nếu không nó sẽ mở ra những gì tôi muốn nó mở). Tôi phải đến đúng nơi và xác thực, bởi vì tôi nhận được lỗi 401 (không được xác thực) nếu tôi đặt tên người dùng/mật khẩu sai và tôi gặp lỗi máy chủ nội bộ 500 nếu tôi chuyển thông số xấu trong chuỗi truy vấn . Tôi đã thử sử dụng Webclient và HttpWebRequest cả hai dẫn đến cùng một lỗi 404 không tìm thấy.
Với WebClient:
string url = "MyValidURLwithQueryString";
WebClient client = new WebClient();
String userName = "myusername";
String passWord = "mypassword";
string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(userName + ":" + passWord));
client.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;
var result = client.DownloadString(url);
Response.Write(result);
Với HttpWebRequest
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("MyValidURL");
string authInfo = "username:password";
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
request.Headers.Add("Authorization", "Basic " + authInfo);
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Http.Get;
request.AllowAutoRedirect = true;
request.Proxy = null;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader streamreader = new StreamReader(stream);
string s = streamreader.ReadToEnd();
Response.Write(s);
Sử dụng [Fiddler] (http://fiddler2.com/), đăng nhập vào trang web của bạn thông qua trình duyệt và xem tiêu đề/nội dung trình duyệt của bạn gửi. Đoán của tôi, bạn cũng nên đặt 'UserAgent' – I4V
Thông tin tiêu đề là chính xác tìm kiếm trong fiddler và tôi cũng đã cố gắng thiết lập UserAgent tại một thời điểm từ một bài trước tôi đã xem xét rằng đề nghị cùng một điều. –
404 không đến từ WebClient - nó từ máy chủ. Có điều gì đó mà máy chủ không thích từ chương trình của bạn, mà nó thích từ trình duyệt. Sử dụng Fiddler để làm cho giao diện WebClient của bạn trông giống như trình duyệt. –