我正在创建一个程序,您在其中输入IP地址,该程序输出有关该IP的大量数据。我正在使用IPStack API来获取此信息。我一直在尝试用XML进行测试,但我知道它也可以使用JSON数据完成。
我看了一堆使用GeoIP的教程(现已关闭)。我尝试使用非常相似的代码,但是更改为与IPstack而不是GeoIP一起使用。
通过使用断点,我看到当读取“ For i = 0 To xmlnode.Count-1”行时,循环直接跳过了,因此在本例中,我将其更改为+1。然后出现以下错误
xmlnode.Count ='xmlnode.Count'引发了类型异常 'System.NullReferenceException'
Private Sub geo()
Dim xmlnode As XmlNodeList
Dim IP As String = txtLookup.Text
Dim APIKey As String = "?access_key=c48babe58dc723c552800c46cbd3c9c6&format=1"
Dim xmldoc As New XmlDocument
Dim URL As String = "http://api.ipstack.com/" & IP & APIKey & "&output=xml"
xmldoc.Load(URL)
xmlnode = xmldoc.GetElementsByTagName("Response")
For i = 0 To xmlnode.Count - 1 'This is the issue
xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
Label2.Text = "Country Code : " & xmlnode(i).ChildNodes.Item(1).InnerText.Trim()
Label3.Text = "Country Name : " & xmlnode(i).ChildNodes.Item(2).InnerText.Trim()
Label4.Text = "Region Code : " & xmlnode(i).ChildNodes.Item(3).InnerText.Trim()
Label5.Text = "Region Name : " & xmlnode(i).ChildNodes.Item(4).InnerText.Trim()
Label6.Text = "City : " & xmlnode(i).ChildNodes.Item(5).InnerText.Trim()
Label7.Text = "Post Code : " & xmlnode(i).ChildNodes.Item(6).InnerText.Trim()
Label8.Text = "Latitude : " & xmlnode(i).ChildNodes.Item(7).InnerText.Trim()
Label9.Text = "Longitude : " & xmlnode(i).ChildNodes.Item(8).InnerText.Trim()
Next
End Sub
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
geo()
End Sub