Google 地理编码空引用异常

Google Geocode null reference exception

我制作了一个程序,它从伦敦 属性 门户网站上的几个属性中获取经度和纬度。

我接下来要做的是将那些 long+lat 发送到地理编码和 return 完整格式的地址。下面的代码适用于我的地理编码 URL 列表中的大多数 URL,但偶尔它 return 是空引用异常。

当我检查失败的 URL 并在浏览器中手动 returned 异常时,它工作正常。

如果是这样,我做错了什么?

for (int i = 0; i < longitude.Count; i++)
        {
            Console.WriteLine(longitude[i]);
            Console.WriteLine(latitude[i]);
            //Console.WriteLine("http://maps.google.com/maps/api/geocode/xml?latlng=" + latitude[i] + "," + longitude[i] + "&sensor=false");
            geocodeURL.Add("https://maps.googleapis.com/maps/api/geocode/xml?latlng=" + latitude[i] + "," + longitude[i] + "&key=0000");
        }

        foreach (string i in geocodeURL)
        {

            try
            {
                var requestUri = string.Format(i);

                var request = WebRequest.Create(requestUri);
                var response = request.GetResponse();
                var xdoc = XDocument.Load(response.GetResponseStream());

                var result = xdoc.Element("GeocodeResponse").Element("result");
                var fullAddy = result.Element("formatted_address").Value;
                address.Add(fullAddy);
                Console.WriteLine(fullAddy);
            }
            catch (Exception e)
            {
                Console.WriteLine(i);
                Console.WriteLine(e);
            }       
        }

XMl 响应如下所示:

<GeocodeResponse>
<status>OK</status>
 <result>
  <type>street_address</type>
  <formatted_address>4 Sydenham Ave, London SE26 6UH, UK</formatted_address>

一个这样的异常例子,你可以看到URL似乎没问题,但无论如何它都会抛出一个异常......(我已经把钥匙涂黑了)

Google 对在一定时间内可以发送的结果数量有限制。由于您一次发送数百个请求,您可能 运行 超出了此限制,错误是 google 告诉您支付一些现金或 gtfo 的方式。

如果您不想付款,您可以每隔几次请求设置一个 Thread.Sleep(2000)(或其他等待时间)以绕过限额。