Witam, męczę się z problemem związanym z cookies, tzn napisałem sobie funkcję Get która ma pobierać kody stron i jeżeli występują cookies ma je zapamiętywać i używać, oto treść:
public string Get(string adres)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(adres);
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040707 Firefox/0.9.2";
request.ContentType = @"application/x-www-form-urlencoded";
request.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
if (lastadres != "")
{
Uri sample = new Uri(lastadres);
Uri sample2 = new Uri(adres);
cookieContainer.SetCookies(sample2, cookieContainer.GetCookieHeader(sample));
request.CookieContainer = cookieContainer;
MessageBox.Show(request.CookieContainer.GetCookieHeader(sample).ToString());
}
else
{
request.CookieContainer = cookieContainer;
}
string str;
string ouut = "";
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
for (int i = 0; i < cookieContainer.GetCookies(request.RequestUri).Count; i++)
{
response.Cookies.Add(cookieContainer.GetCookies(request.RequestUri)[i]);
}
cookieContainer.Add(response.Cookies);
StreamReader reader = new StreamReader(response.GetResponseStream());
str = reader.ReadLine();
while (str != null)
{
ouut = ouut + str;
str = reader.ReadLine();
}
lastadres = adres;
}
catch (Exception exception)
{
MessageBox.Show(exception.ToString());
}
return ouut;
}
Do tego mam zadeklarowane dwie zmienne globalne
CookieContainer cookieContainer = new CookieContainer();
string lastadres = "";
jeżeli plik cookie jest tylko jeden to wszystko jest w porządku, jednak gdy przejdę na stronę która daje inny cookie to tego nowego już nie dodaje, pozostaje tylko podstawowy, nie chodzi tu o to że cookies moga pochodzić z różnych serwisów a program i tak będzie wysyłał, bo docelowo i tak będzie pracował na jednym serwisie.
Do testów napisałem 3 skrypty w php:
http://siemian.pl/pliki/cook.php dodaje cookie TestCookie=wartosc
http://siemian.pl/pliki/cook2.php dodaje cookie TestCookie2=wartosc
http://siemian.pl/pliki/cooktest.php sprawdza które cookies są zapisane
i po
Get("http://siemian.pl/pliki/cook.php");
Get("http://siemian.pl/pliki/cook2.php");
richTextBox1.Text = Get("http://siemian.pl/pliki/cooktest.php");
zawsze dostaje że tylko pierwszy cookie jest zapisany
Czy może mi ktoś pomóc rozwiązać problem?