2012-10-03 66 views
1

我使用SVGeocoder訪問iOS上的Google地理編碼服務,而且我遇到了一個非常奇怪的問題。地理編碼在模擬器或連接到wifi的手機上測試時效果很好,但一旦手機切換到3G/4G,我開始出現「LIMIT EXCEEDED」錯誤。我只通過3G/4G發出了幾十個請求,沒有接近2500的請求限制。這裏會發生什麼?Google地理編碼API限制已超出單元網絡,但不是WiFi

在此先感謝!

UPDATE:我最終通過延遲每個地理編碼請求之間的時間來解決問題。我知道發送請求過快可能是個問題,但我沒有意識到它返回了同樣的QUERY_LIMIT_EXCEEDED消息until I read this

但是,這仍然沒有回答爲什麼它在wifi上工作而不是在3G/4G上的問題。

+0

你應該把你的更新放在下面的答案框中,並將其標記爲答案。雖然很好找! –

+0

我很猶豫選擇正確的答案,直到我找出爲什麼延遲工作。恐怕我可能只是在這個問題上寫了一個繃帶。 – bmat

+0

我有麻煩解決完全相同的問題。你解決了嗎?解決方案是什麼? – LKM

回答

0

它在Wifi中工作,因爲您使用自己的IP地址和提供商。 在蜂窩網絡中,您通過您的提供商運行請求,該提供商通常使用外發代理。因此,當Google收到請求時,它會看到您的提供商的所有客戶代理的IP,而不是您自己的IP,與wifi無關。

至少這就是我最終得出的結論,當我遇到類似的問題時,也是基於經驗和數據包捕獲。

  • 這意味着,每個從您的提供商運行的蜂窩網絡中執行的請求將被似乎來自於谷歌相同的IP,從而增加了該指定的IP請求的數量,至少從谷歌服務器的觀點。因此,如果您,您的鄰居和其他數百萬使用相同提供商的人向Google發送請求,並且此提供商使用相同的外發代理,那麼Google似乎可以爲數百萬人/請求看到相同的IP,並且會考慮配額限制將達到。

  • 如果通過您的wifi網絡運行請求,您將不會通過您的移動網絡提供商的外發代理,並擁有您自己的外發IP,並且能夠在「超出限制」之前做更多的請求「錯誤,因爲只有你自己的請求被計算在內。

我相信,在現實中這實際上是一個複雜一點:你的供應商可能有多個出代理,並使用負載均衡派遣他們自己的客戶的要求,谷歌可能有一個數據庫知道主CN提供商的代理商並相應地調整其配額限制,等等......但你看到了這個想法。

+0

這是我第一次想到的,但是當我在每個請求之間添加一個半秒的延遲時,問題就消失了。我想知道是否由於某種原因,WiFi的延遲時間可能會更長,並且這會在請求之間增加足夠的延遲時間,以防止Google阻止訪問。儘管蜂窩網絡的延遲時間似乎不太可能...... – bmat

相關問題