2012-03-26 4 views
1

VB.Net에서 POST 요청을 사용하여 cPanel에 로그인하려고합니다. 로그인 할 때 정확한 자격증 명을 가지고 게시 할 때 '301'(Tamper Data Firefox Add-On을 사용하여 분석)이어야 할 때 'Unauthorized (401)'응답을받을 수 있습니다. 아래는 내 게시물 요청 정보 및 기능입니다.VB.Net 401 권한이없는 HTTP 웹 요청

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 

답변

2

난 당신의 코드를 사용하여 설명 동작을 재현 할 수있다.

나는 내 옆에 작동 CookieContainer을 설정하고, 나는 로그인 할 수 있었던 경우

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 ... 
: 그냥 자격 증명을 제공하는 것입니다

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

두 번째 솔루션