2012-03-26 104 views
1

我试图在VB.Net中使用POST请求登录到cPanel。登录时和发布时我有正确的凭据,当它应该是'301'(使用Tamper Data Firefox Add-On进行分析)时,仍然会收到'未经授权(401)'响应。以下是我的发帖要求信息和功能。VB.Net 401未经授权的HTTP Web请求

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 

发布网址

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

后数据

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

回答

2

我可以复制你的代码你描述的行为。

如果我把它工作在我身边的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 ... 
相关问题