0

我正在尝试为我的聊天程序创建一个通用的行踪定位器。它目前显示 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) Forbidden.(System.Net.WebResponse GetResponse())

为什么我会得到这个?我该如何预防呢?

4

2 回答 2

2

您必须拥有许可证密钥才能使用此服务,如下所述

所有服务都采用与输入相同的参数。它们之间的唯一区别是它们使用的 URI 和它们返回的数据。每个服务采用的两个参数是要查找的 IP 地址您的 MaxMind 许可证密钥

获得这样的密钥后,除了 IP 地址之外,您还必须将其添加到 URL 中。

于 2013-02-11T10:01:11.513 回答
0

我找不到那个特定的 REST API 调用的文档,但从公司的网站上可以清楚地看出,这项服务不是免费的(至少没有许可证密钥)。这是一种经典方法(您向 API 发出的每个请求都附带您的应用程序/许可证密钥),例如 Twitter 和 Facebook 都有它。

看看这个链接,他们给出了一个代码示例,说明如何从 C# 使用他们的 GeoIP 服务。另外,考虑看看他们的免费数据库

于 2013-02-11T10:05:39.913 回答