Я хотел бы получить содержимое веб-страницы, проанализировать его и получить связанную страницу, чтобы проанализировать это.
Я создал метод загрузки, который различает типы сайтов:
void startReq(string url, int type)
{
switch (type)
{
case 1:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.BeginGetResponse(new AsyncCallback(GetRequestStreamCallbackPageTypeOne), webRequest);
break;
case 2:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webReques.BeginGetResponse(new AsyncCallback(GetRequestStreamCallbackPageTypeTwo), webReques);
break;
default:
MessageBox.Show("should not get here: startreq-Method ,default-case");
break;
}
}
А вот и ответный звонок:
void GetRequestStreamCallbackPageTypeOne(IAsyncResult asynchronousResult)
{
string responseString = "";
WebResponse response = ((HttpWebRequest)asynchronousResult.AsyncState).EndGetResponse(asynchronousResult);
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
responseString = reader.ReadToEnd();
reader.Close();
}
Dispatcher.BeginInvoke(()=>parseFirstpage(responseString));
}
Как видите, я использую Dispatcher
для вызова метода синтаксического анализа (я не знаю, как еще это сделать).
Как только я закончу анализ, я вызываю startReq
с параметрами типа страницы 2.
Но в GetRequestStreamCallbackPageTypeTwo
метод, который * выглядит так же, как GetRequestStreamCallbackPageTypeOne
Я получаю необработанную ошибку исключения в этой строке:
WebResponse response = ((HttpWebRequest)asynchronousResult.AsyncState).EndGetResponse(asynchronousResult);
и я не понимаю почему. Как я могу исправить это, или есть лучшее решение, чем мое?