(403)禁止WebRequest

时间:2013-02-11 09:55:51

标签: c# webrequest

我正在尝试为我的聊天程序创建一个常规的行踪定位器。它目前显示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())

为什么我会这样?我该如何预防?

2 个答案:

答案 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