我正在硬编码IP地址以进行测试,如下所示。
string country = GetCountryByIP("173.194.113.23");
现在这是我的GetCountryByIP方法,其中IP地址被扔进去:
public string GetCountryByIP(string ipAddress)
{
string ipResponse = IPRequestHelper("http://api.ipinfodb.com/v3/ip-country/?key=(api key deleted for security purposes)&ip=", ipAddress);
XmlDocument ipInfoXML = new XmlDocument();
ipInfoXML.LoadXml(ipResponse);
XmlNodeList responseXML = ipInfoXML.GetElementsByTagName("Response");
NameValueCollection dataXML = new NameValueCollection();
dataXML.Add(responseXML.Item(0).ChildNodes[2].InnerText, responseXML.Item(0).ChildNodes[2].Value);
string xmlValue = dataXML.Keys[0];
return xmlValue;
}
还有我的 IP 助手,用于从 api 响应:
public string IPRequestHelper(string url, string ipAddress)
{
string checkURL = url + ipAddress;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
StreamReader responseStream = new StreamReader(objResponse.GetResponseStream());
string responseRead = responseStream.ReadToEnd();
responseStream.Close();
responseStream.Dispose();
return responseRead;
}
我从 xml 中的 api 收到响应,说这是一个无效的 IP 地址。在调试模式下,url 和 ip 地址在两种方法中都正确传递到参数中。我在浏览器的地址栏中测试了正确的 url 和 ip 地址(对其进行硬编码),它工作正常。
有什么想法吗?
想通了,对不起伙计们。写在哪里:
string checkURL = url + ipAddress;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
问题是这样的:
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(checkUrl);
^^^^^^^^