Webページの内容を取得し、解析し、リンクされたページを取得して解析したいと考えています。HttpWebrequest呼び出し順序または未処理例外
私はサイトの種類を区別し、ダウンロード方法を作成しました:
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
を使用してIどのようにそれを行うか分からない)。
構文解析が終了したら、ページタイプ2のパラメータでstartReq
を呼び出します。 はしかし*がGetRequestStreamCallbackPageTypeOne
と同じように見えますGetRequestStreamCallbackPageTypeTwo
方法、で私はこのラインで未処理の例外エラーが出ます:
WebResponse response = ((HttpWebRequest)asynchronousResult.AsyncState).EndGetResponse(asynchronousResult);
と私は理由を理解していません。これを修正するにはどうすればよいですか、それとも私より優れたソリューションですか?
:働い
URLは、このでした。 Webサーバーからのエラーにより、EndGetResponseを呼び出すときに例外が発生します。 – calum
しかありません: "例外は処理されませんでした"、私が詳細を押すと、System.Exception {""}があります。データ{System.Collections.ListDictionaryInterval} InnerException {"指定されていないエラー"}メッセージ " – Pamp
switchステートメントにブレークポイントを設定し、2番目の要求の作成に使用するURLを再確認します。あなたがURLを投稿すると、それが私のために働くかどうかわかります。また、宣言されていない 'webReques'変数( 't'がありません)を使用する投稿コードで、変数名を確認してください。 – calum