C # HttpWebRequest - PreAuthenticate: по-прежнему возвращает 401 запрещено (HTTPS) - PullRequest
1 голос
/ 08 февраля 2010

Я хотел бы попросить вас помочь с кодом, который я быстро написал, потому что я всегда получаю "403 ЗАПРЕЩЕНО".

HttpWebRequest pozadavek = (HttpWebRequest)WebRequest.Create("LINK THAT ASKS FOR AUTHLOGIN"); //https
    System.IO.StreamReader stream = null;
    System.String result = null;
    public Form1()
    {
        InitializeComponent();
        pozadavek.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
        pozadavek.Credentials = new NetworkCredential("NAME", "PASS");
        pozadavek.PreAuthenticate = true;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        WebResponse webresponse = pozadavek.GetResponse(); //throws an exception:403 forbidden
        stream = new System.IO.StreamReader(webresponse.GetResponseStream());
        result = stream.ReadToEnd();
        this.webBrowser1.DocumentText = result;
    }

Ответы [ 2 ]

4 голосов
/ 08 февраля 2010

Сайт, который вы пытаетесь открыть, требует базовой аутентификации. Суть в том, что вам нужно включить имя пользователя / пароль в base64, закодированный с вашим запросом. К счастью, .Net делает это для вас. Создайте свой запрос так:

var credCache = new CredentialCache();
credCache.Add(new Uri("https://is.vsfs.cz/auth"), "Basic",
                  new NetworkCredential("user", "pwd"));
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Credentials = credCache;

Вот одна статья , более подробно объясняющая, как обрабатываются различные схемы аутентификации в .Net.

0 голосов
/ 02 октября 2015

Этот код работает 4 меня ...

Uri address = new Uri("https://www.example.com");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
string authInfo = username + ":" +password;
authInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes(authInfo));
request.Headers.Add("Authorization", "Basic " + authInfo);
NetworkCredential myCreds = new NetworkCredential(username, password);
request.Credentials = myCreds;
request.Method = WebRequestMethods.Http.Get;
request.AllowAutoRedirect = true;
request.Proxy = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...