leonapster
23-03-2008, 22:54
Con questa funzione effettuo il login su un forum phpbb:
private string GetSource()
{
// Prepare the HttpWebRequest to send data to Amazon.com
string url = string.Format("http://sito.it/forum/ucp.php?mode=login");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051111 Firefox/1.5";
request.Method = "POST";
request.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
request.KeepAlive = true;
request.ContentType = @"application/x-www-form-urlencoded";
// Send the log-in data
string postData =
"username=aaaaa" +
"&password=bbbbbb" +
"&autologin=1" +
"&redirect=index.php" +
"&login=Log In\"";
byte[] postBuffer = System.Text.Encoding.GetEncoding(0).GetBytes(postData);
request.ContentLength = postBuffer.Length;
Stream postDataStream = request.GetRequestStream();
postDataStream.Write(postBuffer, 0, postBuffer.Length);
postDataStream.Close();
// Get the response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Read the response from the stream
Encoding enc = System.Text.Encoding.UTF8;
StreamReader responseStream = new StreamReader(response.GetResponseStream(), enc, true);
string responseHtml = responseStream.ReadToEnd();
response.Close();
responseStream.Close();
return responseHtml;
}
Funziona tutto correttamente, ma le successive pagine che richiedo con la seguente funzione non sono loggate.
private string ottienipagina(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader responseStream = new StreamReader(response.GetResponseStream());
String output = responseStream.ReadToEnd();
responseStream.Close();
response.Close();
return output;
}
Come faccio quindi a mantenere attiva la sessione del login? So' che phpbb lascia un cookie, magari potrei usare quello. ma come gestire i cookie?
grazie
private string GetSource()
{
// Prepare the HttpWebRequest to send data to Amazon.com
string url = string.Format("http://sito.it/forum/ucp.php?mode=login");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8) Gecko/20051111 Firefox/1.5";
request.Method = "POST";
request.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
request.KeepAlive = true;
request.ContentType = @"application/x-www-form-urlencoded";
// Send the log-in data
string postData =
"username=aaaaa" +
"&password=bbbbbb" +
"&autologin=1" +
"&redirect=index.php" +
"&login=Log In\"";
byte[] postBuffer = System.Text.Encoding.GetEncoding(0).GetBytes(postData);
request.ContentLength = postBuffer.Length;
Stream postDataStream = request.GetRequestStream();
postDataStream.Write(postBuffer, 0, postBuffer.Length);
postDataStream.Close();
// Get the response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Read the response from the stream
Encoding enc = System.Text.Encoding.UTF8;
StreamReader responseStream = new StreamReader(response.GetResponseStream(), enc, true);
string responseHtml = responseStream.ReadToEnd();
response.Close();
responseStream.Close();
return responseHtml;
}
Funziona tutto correttamente, ma le successive pagine che richiedo con la seguente funzione non sono loggate.
private string ottienipagina(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader responseStream = new StreamReader(response.GetResponseStream());
String output = responseStream.ReadToEnd();
responseStream.Close();
response.Close();
return output;
}
Come faccio quindi a mantenere attiva la sessione del login? So' che phpbb lascia un cookie, magari potrei usare quello. ma come gestire i cookie?
grazie