2010-04-17 3 views
1

Je souhaite réutiliser un objet WebRequest afin que les cookies et la session soient enregistrés pour une demande ultérieure au serveur. Voici mon code. Si j'utilise Post la fonction deux fois la deuxième fois àCette propriété ne peut pas être définie après l'écriture a commencé! sur un objet C# WebRequest

request.ContentLength = byteArray.Length;

il lancera une exception

Cette propriété ne peut pas être après l'écriture a commencé!

Mais comme vous pouvez le voir

dataStream.Close();

Fin du processus d'écriture! Quelqu'un sait ce qu'il se passe?

static WebRequest request; 

public MainForm() 
{ 
    request = WebRequest.Create("http://localhost/admin/admin.php"); 
} 

static string Post(string url, string data) 
{ 
    request.Method = "POST"; 
    byte[] byteArray = Encoding.UTF8.GetBytes(data); 
    request.ContentType = "application/x-www-form-urlencoded"; 
    request.ContentLength = byteArray.Length; 
    Stream dataStream = request.GetRequestStream(); 
    dataStream.Write(byteArray, 0, byteArray.Length); 
    dataStream.Close(); 
    WebResponse response = request.GetResponse(); 
    Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
    dataStream = response.GetResponseStream(); 
    StreamReader reader = new StreamReader(dataStream); 
    string responseFromServer = reader.ReadToEnd(); 
    Console.WriteLine(responseFromServer); 
    reader.Close(); 
    dataStream.Close(); 
    response.Close(); 
    request.Abort(); 
    return responseFromServer; 
} 

Répondre

9

Vous ne pouvez pas réutiliser WebRequest. Prenez le HttpWebResponse.Cookies retourné, construisez une nouvelle demande WebRequest et remplissez le HttpWebRequest.CookieContainer. (Vous devez affecter un CookieContainer à la première demande pour obtenir des cookies.)

+0

Qu'en est-il des sessions? (est-ce la même chose avec un cookie?) – EBAG

+0

Les sessions sont généralement implémentées en utilisant des cookies. – dtb

+0

Je pense que les sessions PHP sont une chose côté serveur! alors ils sont basés sur des cookies? – EBAG

Questions connexes