HTTP 403:通过C#程序访问Google Tile时出现禁止错误

时间:2010-07-08 19:58:14

标签: c# http google-maps wcf tiles

我有一个网址"http://mt0.google.com/vt/lyrs=m@129&hl=en&x=11728&y=7595&z=14&s=Galileo"用于从互联网上获取Google Tiles。如果我从浏览器(任何)使用此Google Tile URL,我会成功获取Google Tiles(地图)。但问题是,如果我尝试以程序方式访问此URL,则会出现错误: HTTP 403禁止错误

可能是什么问题?我需要在程序中进行某种设置吗?

我访问网址的代码如下:

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

答案 0 :(得分:3)

可能是因为您没有设置用户代理。尝试添加以下代码:

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

看看是否能解决问题!

答案 1 :(得分:1)

几乎可以肯定的是,谷歌正在分析请求的用户代理字符串,决定你不是浏览器,这意味着你可能是某种形式的网络蜘蛛,并决定它不想浪费网络服务器时间来帮助其他人serach引擎。

您可以通过WebClient Headers属性设置请求的用户代理。

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

答案 2 :(得分:1)

直接访问磁贴违反Google地图服务条款。您应该考虑使用Google Static Maps API代替。