HTTP 403: запрещенная ошибка при доступе к Google Tile через программу на C # - PullRequest
1 голос
/ 08 июля 2010

У меня есть один URL "http://mt0.google.com/vt/lyrs=m@129&hl=en&x=11728&y=7595&z=14&s=Galileo", используемый для получения Google Tiles из Интернета. Если я использую этот URL-адрес Google Tile из браузера (любого), я успешно получаю Google Tiles (Карта). Но проблема в том, что если я пытаюсь получить доступ к этому URL программным путем, я получаю сообщение об ошибке: HTTP 403 Forbidden Error .

В чем может быть проблема? Нужно ли выполнять какие-то настройки в моей программе?

Мой код для доступа к URL выглядит следующим образом:

byte[] imageBuffer = null;
try
{
      WebClient client = new WebClient();
      // It's a sample URL to get Tile from Google as on 29-06-2010                
      string url = "http://mt0.google.com/vt/lyrs=m@129&hl=en&x=11728&y=7595&z=14&s=Galileo";  
      imageBuffer = client.DownloadData(new Uri(url));
}
catch (WebException we)
{
  Debug.Print(we.Message);
  return null;
}
return imageBuffer;

Здесь в блоке catch я получаю исключение HTTP 403: запрещенная ошибка

Ответы [ 3 ]

3 голосов
/ 09 июля 2010

Возможно, вы не настраиваете пользовательский агент. Попробуйте добавить эту строку кода:

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")

Посмотри, исправит ли это!

1 голос
/ 09 июля 2010

Прямой доступ к плиткам противоречит Условиям использования Карт Google. Вам следует рассмотреть возможность использования Google Static Maps API вместо.

1 голос
/ 09 июля 2010

Почти наверняка Google анализирует строку запроса User Agent, решая, что вы не браузер, то есть, вероятно, вы какой-то вид веб-паука, и решает, что не хочет тратить время веб-сервера на помощь другимserach engine.

Вы можете установить User Agent для вашего запроса через свойство WebClient Headers.

        client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
...