Вы должны сделать запрос так, как будто вы только что заполнили форму. Предполагая, что это POST, вы делаете запрос POST с правильными данными. Теперь, если вы не можете войти в систему прямо на той же странице, которую хотите очистить, вам нужно будет отслеживать, какие cookie-файлы заданы после вашего запроса на вход, и включить их в свой запрос на скремблирование, чтобы вы могли оставаться в системе.
Он может выглядеть так:
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;
Возможно.
Спасибо, это похоже на то, что я мог бы использовать, я приму этот ответ, если он будет работать, когда я вернусь к программированию. :-) –
Это работает, если веб-страница находится в обычном HTML, но если форма динамически создается через Javascript ... будет ли это работать? – Souper
@Souper, вероятно, нет; вам нужно будет проверить, какие запросы, идущие от входа на страницу, которую вы хотите очистить, будут, а затем создавать запросы, которые имитируют это поведение. – dlamblin