Här kommer lite kod. Tänk på att anropet sker asynkront så koden exekveras inte uppifrån och ned... Antar att det har något att göra med att jag gör två anrop, först en response för att hämta jsessionid och token, sedan en request där jag postar formulärdata (men då kanske jag får ett nytt sessionid och en ny token?). Men man måste väl göra detta i två steg? Det går inte att återanvända ett request-objekt.
Kod:
// skapa en webclient och gör ett asynkront anrop
var wc = new WebClient();
wc.DownloadStringCompleted += (s, args) =>
{
// plocka ut token och jsessionid
token = args.Result.ToString();
token = token.Substring(token.IndexOf("_csrf_token") + 41).Substring(0, 41);
jSessionId = wc.ResponseHeaders.ToString().Substring(65, 43);
// sätt encoding och cookie
wc.Encoding = Encoding.UTF8;
wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
wc.Headers["Set-Cookie"] = jSessionId + "; Path=/banking-nordea; Secure";
wc.UploadStringCompleted += (s2, args2) =>
{
// fångar upp svaret (som tyvärr blir omsändning av formulär)
string result = args2.Result.ToString();
};
// posta formuläret
wc.UploadStringAsync(
new Uri("https://mobil.nordea.se/banking-nordea/nordea-c1/login.html"),
"POST",
"_csrf_token=" + token + "&xyz=" + ssn + "&zyx=" + pass);
};
// obs detta sker först!
// gör en response för att hämta token och jsessionid
wc.DownloadStringAsync(
new Uri("https://mobil.nordea.se/banking-nordea/nordea-c1/login.html"));
}