Hej! Det där känns inte riktigt rätt, du behandlar cookies helt fel. Ett tips är att köra med t.ex. fiddler för att se vad som egentligen händer, och att du jämför vad som händer nu med vad som händer när du manuellt surfar in på den där TJW och loggar in. Tack Oskar!Cookies och persistant data med WebClient
Jag har ett lite underligt problem som gäckat mig i över 3 månader nu. Efter att totalt kört fast tar jag en rövare och ser om det är någon av er här som kanske har några smarta drag.
I ett litet hobbyprojekt försöker jag integrera en applikation (.NET) med en webbsida på en Tiny Java Web Server. Min applikation är i två steg, där det första steget innebär att jag loggar in på webbplatsen som finns på TJW-servern. Inloggningen lyckas och jag får se "välkomstskärmen". Tillbaka från servern får jag också en Set-Cookie.
I mitt andra steg navigerar jag till en länk på webbplatsen (som kräver inloggning). Jag skickar med Cookie-värdet och det är nu jag kör fast. Här hamnar jag i ett "utloggat" läge och kan inte fortsätta.
Någon stans har min session försvunnit på servern eller klientsidan. Är det någon som har en idé om hur jag kan lösa detta.
private string _url = "CurrentPage.ijp"
string _userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
public String Result()
{
using (WebClient wc = new WebClient()) {
wc.BaseAddress = "http://10.0.0.4";
string cookie = Login(wc);
return Navigate(wc, cookie);
}
}
private string Login(WebClient wc) {
string loginUrl = "MainPage.ijp";
NameValueCollection login = new NameValueCollection();
login.Add("action", "login");
login.Add("login", ConfigurationManager.AppSettings["WebScene.Username"]);
login.Add("password", ConfigurationManager.AppSettings["WebScene.Password"]);
login.Add("language", "sv");
login.Add("remember", "off");
wc.Headers.Add(HttpRequestHeader.UserAgent, _userAgent);
byte[] response = wc.UploadValues(loginUrl, "POST", login);
cookie = wc.ResponseHeaders["Set-Cookie"];
return cookie;
}
private String Navigate(WebClient wc, String cookie) {
try {
wc.Headers.Add(HttpRequestHeader.UserAgent, _userAgent);
wc.Headers.Add(HttpRequestHeader.Cookie, cookie);
return response = wc.DownloadString(url); //Här blir svarat som om jag aldrig loggat in
} catch (WebException ex) {
return String.Empty;
}
}
Sv: Cookies och persistant data med WebClient
Hur som haver, titta på CookieContainer, då slipper du alla dessa problem eftersom att den sköter sig självt.Sv:Cookies och persistant data med WebClient
Du och Fiddler gjorde min dag! Det var som du sa, jag som gjorde fel i cookie-hanteringen. Jag får ju flera rader med "set-cookie" tillbaka från servern, och att bara baka ihop dem som jag gjorde förstörde ju allt. Nu fungerar det!
/Henrik