Jest pewien wstępny kod, który nie działa odpowiednio:
try
{
HttpWebRequest^ request = dynamic_cast<HttpWebRequest^> (WebRequest::Create("http://profil.wp.pl/login.html?url=http%3A%2F%2Fpoczta.wp.pl%2Findex.html%3Fflg%3D1&serwis=nowa_poczta_wp"));
request->Accept = "*/*";
request->AllowAutoRedirect = true;
request->UserAgent = "http_requester/0.1";
request->Timeout= 60000;
request->Method = "POST";
if (request->Method == "POST")
{
request->ContentType = "text/html; charset=windows-1251";
ASCIIEncoding^ encoding = gcnew ASCIIEncoding;
array<Byte ,1> ^ postByteArray = encoding->GetBytes("&login_username=login&login_password=pass");
request->ContentLength = postByteArray->Length;
Stream ^postStream = request->GetRequestStream();
postStream->Write(postByteArray, 0, postByteArray->Length);
postStream->Close();
}
HttpWebResponse ^response = dynamic_cast<HttpWebResponse^> (request->GetResponse());
if (response->StatusCode == HttpStatusCode::OK)
{
Stream ^responseStream = response->GetResponseStream();
StreamReader ^myStreamReader = gcnew StreamReader(responseStream);
responseData = myStreamReader->ReadToEnd();
}
response->Close();
}
catch (Exception ^e)
{
responseData = "Error: " + e->Message;
}
richTextBox1->AppendText(responseData);
}
Wstępnie do HttpWebRequest jest ładowana główna strona logowania, potem staram się zapisać jakoś wartości login i password do zmiennych znajdujących się wewnątrz dokumentu, ale raczej bezowocnie. Zastanawiam się czy nie można by od razu przekazać loginu i hasła i wywołać Request do strony logowania już z danymi, co w efekcie powinno od razu przekierować na stronę skrzynki, w przypadku poprawnego zalogowania. Jednak przyznam, że w tej kwestii jestem zielony i nie wiem jak to powinno wyglądać.
Dodatkowo, to samo wcześniej zrobiłem przez kontrolkę WebBrowser. Wpisanie danych i wywołanie zdarzenia click na przycisku (InvokeMember). A jak to powinno wyglądać w HttpWebRequest i Response ?:/ Czy dane logowania załadować do wewnątrz strony, czy przekazać w adresie poprzedzając "ampersandem". Byłbym bardzo wdzięczny gdyby ktoś mi to dogłębnie wytłumaczył, bo to podstawa do całej reszty. (Jak będę wiedział jak to działa, to sam zrobię logowanie do innych skrzynek; p)
Aha, jeszcze coś. Żeby prześledzić proces logowania na skrzynkę za pomocą przeglądarki skorzystałem ze sniffera (Fiddler), ale przeglądam wszystko co wyłapał i jakoś nie widzę by te dane (login i hasło) były przekazywane (hasło pewnie jest szyfrowane).
Wcześniej w WebBrowserze to robiłem, bo szukałem jakiejś funkcji, która da dogłębny "raport" z procesu logowania, ale też nic nie znalazłem.
I w tym momencie właśnie skończyły mi się pomysły ; p
P.S. W ostateczności można by używać WebBrowser, bo tam wszelka obsługa tego typu elementów jest banalnie prosta, jednak ta kontrolka "zżera" trochę za dużo zasobów. Wolę wykorzystać coś co jest bardziej preferowane do tego zadania ; p
Jeśli chodzi o różnice między Visualem a Builderem. Poprawność kodu nie jest aż tak istotna, ważne by było jasno przekazane, a w Builderze powinny też być te funkcje, należą do bibliotek "ogólnych".