我有一个函数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>
这在 Sub 中进行解析error_handler
,并根据错误选择以下操作。
此代码有效,但我必须检查是否 ElseIf s.Name = "error"
每次都遇到这样的错误,尽管所有方法都调用该api_request
函数。是否可以在返回 Reader 之前检查 api_request 函数中的错误?问题是如果我在那里开始读取 xml,并且没有错误,我无论如何都无法将 Reader 定位到开头。