我正在尝试为我的聊天程序创建一个常规的行踪定位器。它目前显示IP,用户名,我正在尝试添加位置。我正在尝试使用这段代码:
var location = "";
List<string> HTML_code = new List<string>();
WebRequest request = WebRequest.Create("http://www.maxmind.com/app/locate_demo_ip?ips=" + IP);
using (WebResponse response = request.GetResponse())
using (StreamReader stream = new StreamReader(response.GetResponseStream()))
{
string line;
while ((line = stream.ReadLine()) != null)
{
HTML_code.Add(line);
}
}
location = (HTML_code[296].Replace("<td><font size=\"-1\">", "")).Replace("</font></td>", "");
return location;
然而,这会返回有关WebResponse的例外:
远程服务器返回错误:(403) 禁止。(System.Net.WebResponse GetResponse())
为什么我会这样?我该如何预防?
答案 0 :(得分:2)
您必须拥有许可证密钥才能使用此服务,如here所示:
所有服务都采用与输入相同的参数。它们之间的唯一区别是它们使用的URI和它们返回的数据。每项服务采用的两个参数是要查找和your MaxMind license key 的IP地址。
获得此类密钥后,除了IP地址外,还必须将其添加到URL中。
答案 1 :(得分:0)
我找不到该特定REST API调用的文档,但从该公司的网站上可以清楚地看到该服务不是免费的(至少没有许可证密钥)。这是一种经典的方法(伴随您使用app / license密钥对API发出的每个请求),例如Twitter和Facebook都有它。
看看this link,他们在这里给出了如何使用C#中的GeoIP服务的代码示例。另外,请考虑查看他们的free databases。