1

"http://mt0.google.com/vt/lyrs=m@129&hl=en&x=11728&y=7595&z=14&s=Galileo"インターネットから Google タイルを取得するために使用するURL が 1 つあります。この Google タイル URL をブラウザー (任意) から使用すると、Google タイル (マップ) を正常に取得できます。しかし問題は、この URL にプログラムでアクセスしようとすると、 Error: 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 の例外が発生します: Forbidden Error

4

3 に答える 3

3

ユーザーエージェントを設定していないことが原因と考えられます。次のコード行を追加してみてください。

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

それが修正されるかどうかを確認してください!

于 2010-07-08T20:08:27.737 に答える
1

タイルに直接アクセスすることは、Google マップの利用規約に違反しています。代わりに、 Google Static Maps APIの使用を検討してください。

于 2010-07-08T23:11:48.733 に答える
1

ほぼ確実に、Google はリクエストのユーザー エージェント文字列を分析し、あなたがブラウザーではなく、おそらく何らかの形の Web スパイダーであると判断し、他の検索エンジンを支援するために Web サーバーの時間を無駄にしたくないと判断します。

HeadersWebClientプロパティを使用して、リクエストのユーザー エージェントを設定できます。

        client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
于 2010-07-08T20:04:51.927 に答える