我有一个网址"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:禁止错误
的例外情况答案 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代替。