H
Hallo,
dank Google habe ich doch noch eine Lösung für mein Problem gefunden :
http://www.developerfusion.com/show/4637/3/
Einfach vor dem Login die CookieCollection initialisieren, nach dem Login diese aus dem HttpWebResponse in einen eigenen CookieContainer kopieren und später bei jedem Zugriff alle Cookies dem HttpWebRequest wieder beigeben.
public class MyHTTPRequest
{
private CookieCollection Cookies;
public MyHTTPRequest()
{
Cookies = new CookieCollection();
}
public String GetAnswer(String url)
{
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(url);
webreq.CookieContainer = new CookieContainer();
foreach (Cookie sCookie in Cookies)
webreq.CookieContainer.Add(sCookie);
WebResponse webres = webreq.GetResponse();
Stream webstream = webres.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readstream = new StreamReader(webstream, encode);
char[] buffer = new char[1025];
int n = readstream.Read(buffer, 0, 1024);
String answer = new String(buffer, 0, 1024);
while (n > 0)
{
n = readstream.Read(buffer, 0, 1024);
String ans = new String(buffer, 0, n);
answer += ans;
}
webstream.Close();
return answer;
}
public String Login(String url)
{
Cookies = new CookieCollection();
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(url);
webreq.CookieContainer = new CookieContainer();
HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse();
Stream webstream = webres.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readstream = new StreamReader(webstream, encode);
char[] buffer = new char[1025];
int n = readstream.Read(buffer, 0, 1024);
String answer = new String(buffer, 0, 1024);
while (n > 0)
{
n = readstream.Read(buffer, 0, 1024);
String ans = new String(buffer, 0, n);
answer += ans;
}
if (webres.Cookies.Count > 0)
{
Cookies = webres.Cookies;
}
webstream.Close();
return answer;
}
}