
現在Visual Studio 2015(VB)にてアプリケーションを作っており(自己使用目的)、その中でWEB上のXMLデータを取得しフォーム上のDataGridに入力しデータベースを更新しております。
上記一連の取得、データベース更新は動作しております。
ただ、WEB上のXMLデータ取得時に時折レスポンスとして503エラーが表示される場合があり、その場合は当然取得したいデータ項目もないわけでエラーとなります。
サイドXMLデータがあるURLにアクセスすると表示される場合があるので、503エラーの場合はもう一度リクエストをかけて取得するというプログラムにしたいのですが、上手くいきません。
現状はネット上で参考になるページを探してつぎはぎしたものですが、Form上のデータ取得用のボタンをクリックで、DateGridViewのカレント行のURL情報をもとにXMLデータのあるURLにアクセスし、指定の項目タグ内のテキストを取得。
その後同じカレント行のCells(1)に取得したデータを入力という流れです。
以下現状のコードです。
ボタンクリック時
Dim URL As String
Dim req As HttpWebReques
Dim res As WebResponse
Dim stream As Stream
Dim streamReader As StreamReader
Dim xmlDoc As Xml.XmlDocument
Dim xmlStr As String
Dim dGrid As DataGridView
dGrid = Tbl_ItemDataGridView
’ポイントA
req = WebRequest.Create(URL)
res = req.GetResponse 'ポイントC 503エラーのときはここで引っかかる。
stream = res.GetResponseStream
xmlStr = streamReader.ReadToEnd()
xmlDoc = New XmlDocument()
xmlDoc.LoadXml(xmlStr)
'DateGridに入力(実際には10項目くらい取得しております)
dGrid.CurrentRow.Cells(1).Value=xmlDoc.Item("DATA").InnerText
'ポイントB
streamReader.Close()
stream.Close()
res.Close()
当初ポイントBのあたりで、xmlDoc.Item("DATA").InnerText の値がない場合(503エラー)にポイントAまで戻すようなループを考えていたのですが、そもそも503エラーのときはポイントCで引っかかるので、req.GetResponseが503という判定をどのようにしてよいかわからずという状況です。
宜しくお願いいたします。


回答3件
あなたの回答
tips
プレビュー