我正在使用SVGeocoder访问iOS上的Google地理编码服务,而且我遇到了一个非常奇怪的问题。在模拟器或连接到wifi的手机上进行测试时,地理编码工作正常,但一旦手机切换到3G / 4G,我就会开始出现“极限超出”错误。我只通过3G / 4G发出了几十个请求,没有接近2500请求限制。可能会发生什么?
提前致谢!
更新:我最终通过延迟每个地理编码请求之间的时间来解决问题。我知道发送请求太快可能是个问题,但我没有意识到它返回了相同的QUERY_LIMIT_EXCEEDED消息until I read this。
然而,这仍然没有回答为什么它适用于wifi而不是3G / 4G的问题。
答案 0 :(得分:0)
它在Wifi中工作,因为您随后使用自己的IP地址和提供商。 在蜂窝网络中,您通过提供商运行请求,通常使用传出代理。因此,当Google收到请求时,它会看到您所有客户的代理商的IP代码,而不是您自己的IP,这与WiFi情况不同。
至少这是我在遇到类似问题时得出的结论,基于经验和数据包捕获。
这意味着,从您的提供商运营的蜂窝网络执行的每个请求似乎都来自Google的相同IP,从而增加了对此给定IP的请求数量,至少来自Google服务器' 观点看法。因此,如果您,您的邻居以及使用同一提供商的其他数百万人向Google发送请求,并且此提供商使用相同的外发代理,那么Google似乎可以为这些数百万人/请求看到相同的IP,并会考虑要达到的配额限制。
如果您通过wifi网络运行请求,您将不会通过您的蜂窝网络提供商的传出代理,并将拥有您自己的传出IP,并且可以在查看“LIMIT”之前做更多请求超出“错误,因为只计算您自己的请求。
我认为事实上实际上有点复杂:您的提供商可能有多个传出代理并使用负载平衡来调度客户的请求,Google可能拥有一个知道主要CN提供商代理的数据库并相应地调整其配额限制等......但是你看到了这个想法。