Код для заполнения и отправки вышеуказанной формы следующий:
// Строка URI для отправки формы.
строка uriString = " http://www.xxx.com/Login.aspx ";
// Строковые данные для отправки.
строка postString = "userName=user1&password=password1";
//Инициализируем веб-клиент
WebClient webClient = новый WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//Преобразуем строку в массив байтов
byte[] postData = Encoding.ASCII.GetBytes(postString);
//Загружаем данные и возвращаем массив байтов страницы
byte[] responseData = webClient.UploadData(uriString, "POST", postData);
//Преобразуем возвращенный массив байтов в строку (HTML)
строка srcString = Encoding.UTF8.GetString(responseData);
srcStrinig — это HTML-код страницы, возвращаемый после отправки формы. Как насчет этого? Это очень просто.
Однако приведенный выше код может отправить форму, созданную ASP или JSP, но не может отправить форму ASP.NET. Потому что при отправке формы ASP.NET значения должны быть присвоены «__VIEWSTATE» и «__EVENTVALIDATION». Значения «__VIEWSTATE» и «__EVENTVALIDATION» можно найти, щелкнув правой кнопкой мыши «Просмотреть исходный код» на странице, которую нужно отправить. следующее:
id="__VIEWSTATE" value="/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0="
id="__EVENTVALIDATION" value="/wEWBAKxhbOEAQKPpuq2CAlyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc"
Значения «__VIEWSTATE» и «__EVENTVALIDATION», полученные с помощью «Просмотра исходного файла», не могут быть напрямую отправлены в форму и должны быть преобразованы в строки, закодированные в URL-адресе.
viewState = System.Web.HttpUtility.UrlEncode(viewState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
Полный код выглядит следующим образом:
// Текст кнопки отправки.
строка submitButton = «Войти»;
//VeiwState страницы (можно получить, открыв страницу через IE, щелкнув правой кнопкой мыши «Просмотреть исходный файл»)
строка viewState = "/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0=";
//EventValidation страницы (можно получить, открыв страницу через IE, щелкнув правой кнопкой мыши «Просмотреть исходный файл»)
строка eventValidation = "/wEWBAKxhbOEAQKPpuq2CAlyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc";
submitButton = System.Web.HttpUtility.UrlEncode(submitButton);
viewState = System.Web.HttpUtility.UrlEncode(viewState);
try
);
{
// Строка URI для отправки формы.
строка uriString = " http://www.xxx.com/Login.aspx ";
// Строковые данные для отправки. Формат следующий: user=uesr1&password=123.
строка postString = "userName=1&password=1" + "&loginButton=" + submitButton + "&__VIEWSTATE=" + viewState + "&__EVENTVALIDATION=" + eventValidation;
//Инициализируем веб-клиент
WebClient webClient = новый WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//Преобразуем строку в массив байтов
byte[] postData = Encoding.ASCII.GetBytes(postString);
//Загружаем данные и возвращаем массив байтов страницы
byte[] responseData = webClient.UploadData(uriString, "POST", postData);
// Преобразуем возвращенный массив байтов в строку (HTML);
//Страница, возвращаемая ASP.NET, обычно имеет кодировку Unicode. Если она написана на упрощенном китайском языке, ее следует использовать.
// Encoding.GetEncoding("GB2312").GetString(responseData)
строка srcString = Encoding.UTF8.GetString(responseData);
}
поймать (WebException мы)
{
строка msg = we.Message;
}
Несколько примечаний:
1) srcStrinig — это HTML-код страницы, возвращаемый после отправки формы. Вы можете использовать регулярные выражения для его анализа и получения необходимых вам данных.
2) Значения «__VIEWSTATE» и «__EVENTVALIDATION» не являются статическими.
3) Вы также можете просматривать данные POST веб-страницы с помощью некоторых инструментов, таких как: инструмент анализа данных веб-страницы HttpWatch, сетевой анализатор и т. д.
4) Если в отправленной форме есть проверочный код, это выходит за рамки данной статьи.
URL этой статьи: http://www.cnblogs.com/anjou/archive/2006/12/25/602943.html.