2009-10-17 7 views
1

Salut j'essaie de faire une application qui publie des données sur une page de connexion joomla, mais la seule chose que je reviens est les cookies n'est pas activé.HttpWebRequest POST et les 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 

Comment faire?

Répondre

5

Essayez de mettre .CookieContainer avant d'écrire à .GetRequestStream()

Regardez cet exemple:

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

Nice, il a fonctionné! Merci – JerryJ

+0

J'essaie de faire la même chose (POSTing pour s'authentifier, obtenir l'ID sessiond dans cookie, requêtes GET avec cookie), et j'apprécierais si vous pouviez publier le code VB.Net entier que vous avez fini par utiliser. Je vous remercie. – Gulbahar

+0

On dirait que cela fonctionne pour une seule connexion, mais quand j'essaie d'accéder au contenu protégé, je suis renvoyé à la page de connexion. – Shimmy

Questions connexes