api_request
APIメソッドを引数として取り返す関数がありますXMLTextReader
Shared Function api_request(method As String) As XmlTextReader
request_text = method & ".xml"
url = "https://api.vk.com/method/" & request_text & "&access_token=" & token
Return New XmlTextReader(url)
End Function
この関数をさまざまな場所から呼び出してサイトAPIにリクエストを送信しますが、メソッドに応じて結果の解析方法が大きく異なります。
したがって、それぞれの方法で、私は次のようなものを持っています:
Dim s As Xml.XmlReader = api_request("users.get")
While s.Read
If s.NodeType = XmlNodeType.Element Then
If s.Name = "user" Then
curr_user=s.ReadElementContentAsString
ElseIf s.Name = "error" Then
error_handler(s, "user.get")
End If
End If
End While
ご覧のとおり、私はコードを持っていますElseIf s.Name = "error" Then error_handler(s, "user.get")
。これは、エラーが発生した場合、サーバーは常に次のようなものを返すためです。
<error>
<error_code>4</error_code>
<error_msg>Incorrect signature</error_msg>
</error>
これはerror_handler
Subで解析され、エラーに応じて次のアクションが選択されます。
このコード は機能しますが、すべてのメソッドが関数を呼び出しますが、ElseIf s.Name = "error"
毎回api_request
そのようなエラーが発生するかどうかを確認する必要があります。リーダーを返す前にapi_request関数のエラーをチェックすることは可能ですか?問題は、そこでxmlを読み始めてもエラーがない場合、とにかくリーダーを先頭に配置できないことです。