Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP 403:通过C#程序访问Google Tile时出现禁止的错误_C#_Http_Google Maps_Wcf_Tiles - Fatal编程技术网

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

HTTP 403:通过C#程序访问Google Tile时出现禁止的错误,c#,http,google-maps,wcf,tiles,C#,Http,Google Maps,Wcf,Tiles,我有一个URL”http://mt0.google.com/vt/lyrs=m@129&hl=en&x=11728&y=7595&z=14&s=Galileo“用于从互联网上获取谷歌瓷砖。如果我从浏览器(any)中使用此Google Tile URL,我将成功获取Google Tiles(地图)。但是问题是,如果我尝试访问这个URL程序,我会得到一个错误:HTTP403禁止的错误 有什么问题吗?我需要在程序中进行某种设置吗 我访问URL的代码如下所示: byte[] imageBuffer =

我有一个URL
”http://mt0.google.com/vt/lyrs=m@129&hl=en&x=11728&y=7595&z=14&s=Galileo“
用于从互联网上获取谷歌瓷砖。如果我从浏览器(any)中使用此Google Tile URL,我将成功获取Google Tiles(地图)。但是问题是,如果我尝试访问这个URL程序,我会得到一个错误:HTTP403禁止的错误

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

我访问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 block中,我得到了一个异常HTTP 403:禁止的错误几乎可以肯定,Google正在分析请求的用户代理字符串,确定您不是浏览器,这意味着您可能是某种形式的网络蜘蛛,并确定它不想浪费web服务器时间帮助其他serach引擎

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

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

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

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

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

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

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

看看能不能解决它

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

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

看看能不能解决它

直接访问互动程序违反谷歌地图服务条款。你应该考虑使用“替代”。

直接访问瓷砖是违反谷歌地图服务条款的。你应该考虑使用它。< /P>是的,它是有效的。谢谢你的详细解释。我是否需要添加更合适的“用户代理”,如使用的操作系统、安装在机器上的浏览器或其他任何东西?是的,它可以工作。。谢谢你的详细解释。我是否需要添加更合适的“用户代理”,如使用的操作系统、安装在机器上的浏览器或其他任何东西?是的,它可以工作。。谢谢你的详细解释。我是否需要添加更合适的“用户代理”,如使用的操作系统或安装在机器上的浏览器或其他任何东西?如果您愿意,您可以添加,但如果您只想访问一个图像,则实际上并不重要。是的,它可以工作。。谢谢你的详细解释。我是否需要添加更合适的“用户代理”,如使用的操作系统或安装在机器上的浏览器或其他任何东西?如果您愿意,您可以这样做,但如果您只想访问一个图像,实际上这并不重要。我同意。。但我需要使用谷歌瓷砖服务器只是因为性能问题。另外,您在Google Tile服务器上是否有任何文档,比如在缩放和平移时将屏幕坐标转换为实际的经度、纬度和地图屏幕坐标?谢谢,让我强调一点,直接访问瓷砖是违反谷歌地图服务条款的。我同意。。但我需要使用谷歌瓷砖服务器只是因为性能问题。另外,您在Google Tile服务器上是否有任何文档,比如在缩放和平移时将屏幕坐标转换为实际的经度、纬度和地图屏幕坐标?谢谢,让我强调一点,直接访问tiles是违反谷歌地图服务条款的。