2013-02-11 1 views
0

Я пытаюсь создать общий локатор мест нахождения для моей чат-программы. В настоящее время он показывает IP, Username и я пытаюсь добавить Location. Я пытаюсь использовать этот кусок кода:(403) Запрещено на WebRequest

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:

The remote server returned an error: (403) Forbidden.(System.Net.WebResponse GetResponse())

Почему я получаю это? И как я могу это предотвратить?

ответ

2

Вы должны иметь лицензионный ключ для того, чтобы воспользоваться этой услугой, как написано here:

All of the services take the same parameters as inputs. The only difference between them is the URI they use and the data they return. The two parameters that each service takes are the IP address to look up and your MaxMind license key.

После того, как вы получите такой ключ, вы должны добавить его к URL в дополнение к IP-адресу.

+0

Я вижу, большое спасибо – Daaksin

0

Я не смог найти документацию по этому конкретному вызову REST API, но на веб-сайте компании ясно, что эта услуга не является бесплатной (по крайней мере, не без лицензионного ключа). Это классический подход (вы сопровождаете каждый запрос, который вы вносите в API с помощью вашего приложения/лицензионного ключа), например, как в Twitter, так и в Facebook.

Посмотрите на this link, где они приводят пример кода, как использовать их службу GeoIP с C#. Кроме того, рассмотрите возможность взглянуть на их free databases.