VB.Net 401 Несанкционированный HTTP веб-запрос - PullRequest
1 голос
/ 26 марта 2012

Я пытаюсь войти в cPanel, используя запрос POST в VB.Net. У меня есть правильные учетные данные при входе в систему и при публикации я все еще получаю ответ «Несанкционированный (401)», когда он должен быть «301» (анализируется с помощью дополнения Tamper Data Firefox). Ниже приведена информация и функция моего почтового запроса.

  Private Function POSTreq(ByVal URL$, ByVal Data$)
        Dim tempCookie As New CookieContainer
        Dim DataBytes As Byte() = Encoding.ASCII.GetBytes(Data)
        Dim Request As HttpWebRequest = TryCast(WebRequest.Create(URL), HttpWebRequest)
        Request.Method = "POST"
        Request.ContentType = "application/x-www-form-urlencoded"
        Request.ContentLength = DataBytes.Length

        Dim PostData As Stream = Request.GetRequestStream()
        PostData.Write(DataBytes, 0, DataBytes.Length)
        PostData.Close()

        Dim Response As HttpWebResponse = Request.GetResponse()
        Dim ResponseStream As Stream = Response.GetResponseStream()
        Dim StreamReader As New StreamReader(ResponseStream)
        Dim Text$ = StreamReader.ReadToEnd()

        Return Text
    End Function

Почтовый URL

http://example.com:2082/login/

Почтовые данные

login_theme=cpanel&user=USERNAME&pass=PASSWORD&goto_uri=%2F

1 Ответ

2 голосов
/ 27 марта 2012

Я мог бы воспроизвести ваше описанное поведение с вашим кодом.

Если я установлю CookieContainer, он будет работать на моей стороне, и я смог войти в систему:

rem ...
Request.CookieContainer = tempCookie
Request.Method = "POST"
rem ... and so on ...

Вторым решением будет просто предоставить учетные данные:

rem ...
Dim myFullUri = new Uri(URL)
Dim myCredentials As New NetworkCredential(Username, Password)
Dim myCache As New CredentialCache()

rem Add the credentials for that specific host and 
rem for "Basic" authentication only
myCache.Add(New Uri(myFullUri.Scheme & "://" & myFullUri.Authority), _
    "Basic", myCredentials)

Request.Credentials = myCache

Request.CookieContainer = tempCookie
Request.Method = "POST"
rem ... and so on ...
...