2009-10-17 85 views
1

您好,我试图做一个应用程序,发布数据到一个joomla登录页面,但我唯一回来的是没有启用cookies。HttpWebRequest POST和Cookies

Function GetPage(ByVal Url As String) As String 
    Dim CookieJar As New Net.CookieContainer 
    Dim enc As Encoding = Encoding.GetEncoding(1252) 
    Dim Data As Byte() = Nothing 

    Dim PostData As String = "" 
    If InStr(Url, "?") <> 0 Then 
     PostData = Url.Substring(InStr(Url, "?")) 
     Url = Replace(Url, PostData, "") 
     Url = Url.TrimEnd("?"c) 

     Data = enc.GetBytes(PostData) 
    End If 

    Dim req As System.Net.HttpWebRequest = CType(Net.WebRequest.Create(Url), Net.HttpWebRequest) 
    req.AllowAutoRedirect = False 
    req.ContentType = "application/x-www-form-urlencoded" 
    req.Method = "POST" 
    If Not Data Is Nothing Then 
     If Data.Length > 0 Then 
      req.ContentLength = Data.Length 
      Dim newStream As Stream = req.GetRequestStream() 
      newStream.Write(Data, 0, Data.Length) 
      newStream.Flush() 
      newStream.Close() 
     End If 
    End If 

    req.CookieContainer = CookieJar 
    Dim Response As Net.HttpWebResponse = CType(req.GetResponse(), Net.HttpWebResponse) 

    Dim ResponseStream As IO.StreamReader = New IO.StreamReader(Response.GetResponseStream(), enc) 
    Dim Html As String = ResponseStream.ReadToEnd() 

    Response.Close() 
    ResponseStream.Close() 

    Return Html 
End Function 

我该怎么办?

回答

5

尝试的任何数据写入.GetRequestStream()

看这个样品之前设置.CookieContainer

CookieContainer cookies = new CookieContainer(); 
HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create(site); 
postRequest.CookieContainer = cookies; // note this 
postRequest.Method = "POST"; 
postRequest.ContentType = "application/x-www-form-urlencoded"; 
using (Stream stream = postRequest.GetRequestStream()) 
{ 
    stream.Write(buffer, 0, buffer.Length); 
} 
+0

尼斯它的工作! 谢谢 – JerryJ 2009-10-17 11:44:19

+0

我试图做同样的事情(POSTing验证,在cookie中获取会话ID,使用cookie获取查询),并且如果您可以发布您最终使用的整个VB.Net代码,将不胜感激。谢谢。 – Gulbahar 2010-02-08 10:20:14

+0

看起来它可以用于单一登录,但是当我尝试访问受保护的内容时,我再次参考了登录页面。 – Shimmy 2013-06-19 05:40:31