J'essaie de passer d'un contrôle de navigateur Web à des requêtes http pour l'automatisation des tâches de vitesse. Avec cette fonction, je peux publier des données et recevoir une page de connexion, mais aucun cookie n'est renvoyé et ajouté à la liste des cookies, de sorte que la session connectée n'est pas transmise à la prochaine requête.C# Site Web HttpWebRequest se connecter
//an example call
test("http://websitename.com/loginpage.php", "username=foo&password=123456");
private string test(string url, string data)
{
string responseFromServer;
byte[] byteArray;
Stream dataStream;
HttpWebRequest request;
HttpWebResponse response;
StreamReader reader;
responseFromServer = string.Empty;
try
{
request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.KeepAlive = true;
request.ContentType = "application/x-www-form-urlencoded";
byteArray = Encoding.UTF8.GetBytes(data);
request.ContentLength = byteArray.Length;
request.CookieContainer = new CookieContainer();
foreach(Cookie a in cookies)
request.CookieContainer.Add(a);
dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
response = request.GetResponse() as HttpWebResponse;
foreach(Cookie a in response.Cookies)
cookies.Add(a);
dataStream = response.GetResponseStream();
reader = new StreamReader(dataStream);
responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
}
catch (Exception x)
{
x.ToString();
}
return responseFromServer;
}
Comment puis-je le garder connecté?
Pouvez-vous inclure toute la réponse HTTP (y compris les en-têtes)? (Par exemple, en utilisant [fiddler] (http://www.fiddler2.com/).) –