Złożyłabyś wniosek tak, jakbyś właśnie wypełnił formularz. Zakładając, że jest to POST, na przykład, wysyłasz żądanie POST z poprawnymi danymi. Jeśli nie możesz zalogować się bezpośrednio na tę samą stronę, którą chcesz zeskanować, będziesz musiał śledzić ustawienia plików cookie po zgłoszeniu logowania i uwzględnić je w żądaniu skrobania, aby pozostać zalogowanym.
Może wyglądać następująco:
HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest;
http.KeepAlive = true;
http.Method = "POST";
http.ContentType = "application/x-www-form-urlencoded";
string postData="FormNameForUserId=" + strUserId + "&FormNameForPassword=" + strPassword;
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
http.ContentLength = dataBytes.Length;
using (Stream postStream = http.GetRequestStream())
{
postStream.Write(dataBytes, 0, dataBytes.Length);
}
HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;
// Probably want to inspect the http.Headers here first
http = WebRequest.Create(url2) as HttpWebRequest;
http.CookieContainer = new CookieContainer();
http.CookieContainer.Add(httpResponse.Cookies);
HttpWebResponse httpResponse2 = http.GetResponse() as HttpWebResponse;
Może.
Dziękuję, wygląda to na coś, z czego mógłbym skorzystać, przyjmuję tę odpowiedź, jeśli zadziała, gdy wrócę do programowania. :-) –
Działa to, jeśli strona jest w zwykłym HTML, ale jeśli formularz jest dynamicznie generowany przez JavaScript .... czy to działa? – Souper
@Souper prawdopodobnie nie; chciałbyś ręcznie sprawdzić, jakie będą żądania od logowania do strony, którą chcesz zeskanować, a następnie tworzyć żądania, które naśladują to zachowanie. – dlamblin