เกินขีดจำกัด Google Geocoding API บนเครือข่ายมือถือ แต่ไม่ใช่บน wifi

ฉันใช้ SVGeocoder เพื่อเข้าถึงบริการระบุพิกัดทางภูมิศาสตร์ของ Google บน iOS และฉันประสบปัญหาแปลกๆ จริงๆ . การระบุพิกัดทางภูมิศาสตร์ทำงานได้อย่างสมบูรณ์แบบเมื่อทำการทดสอบบนเครื่องจำลองหรือบนโทรศัพท์ที่เชื่อมต่อกับ wifi แต่เมื่อโทรศัพท์เปลี่ยนเป็น 3G/4G ฉันเริ่มได้รับข้อผิดพลาด "เกินขีดจำกัด" ฉันส่งคำขอเพียงไม่กี่สิบครั้งผ่าน 3G/4G ซึ่งไม่มีที่ไหนเลยที่ใกล้จะถึงขีดจำกัด 2,500 คำขอ เกิดอะไรขึ้นที่นี่?

ขอบคุณล่วงหน้า!

อัปเดต: ฉันลงเอยด้วยการแก้ไขปัญหาด้วยการชะลอเวลาระหว่างคำขอรหัสภูมิศาสตร์แต่ละรายการ ฉันรู้ว่าการส่งคำขอเร็วเกินไปอาจเป็นปัญหาได้ แต่ฉันไม่รู้ว่ามันส่งคืนข้อความ QUERY_LIMIT_EXCEEDED เดียวกัน จนกว่าฉันจะอ่านข้อความนี้

อย่างไรก็ตาม สิ่งนี้ยังคงไม่สามารถตอบคำถามที่ว่าทำไมมันถึงใช้งานได้กับ wifi และไม่ใช่บน 3G/4G


person bmat    schedule 03.10.2012    source แหล่งที่มา
comment
คุณควรใส่การอัปเดตของคุณลงในช่องคำตอบด้านล่างและทำเครื่องหมายว่าเป็นคำตอบ หาที่ดี!   -  person owen gerig    schedule 04.10.2012
comment
ฉันลังเลที่จะเลือกคำตอบที่ถูกต้องจนกว่าฉันจะรู้ว่าเหตุใดความล่าช้าจึงเกิดขึ้น ฉันเกรงว่าฉันอาจจะใส่ bandaid ไว้เหนือปัญหานี้   -  person bmat    schedule 04.10.2012
comment
ฉันประสบปัญหาในการแก้ปัญหาเดียวกันทุกประการ คุณแก้ปัญหาได้หรือไม่? วิธีแก้ปัญหาคืออะไร?   -  person LKM    schedule 16.03.2015
comment
@LKM ฉันเพิ่มความล่าช้าขั้นต่ำระหว่างการเรียกไปยัง API Google จะส่งการตอบกลับข้อผิดพลาดหากคุณส่งคำขอเร็วเกินไป   -  person bmat    schedule 16.03.2015
comment
@bmat ขอบคุณสำหรับคำตอบที่จริงใจ ฉันไม่ได้ลองเลย แต่ฉันคิดว่าวิธีแก้ปัญหาของคุณไม่เป็นทางการ นั่นเป็นปฏิกิริยาที่เหมาะสมที่สุดใช่ไหม? หรือเราจำเป็นต้องเพิ่ม Google GeoCoding API ในคอนโซลนักพัฒนาซอฟต์แวร์ของ Google?   -  person LKM    schedule 16.03.2015
comment
และขอโทษด้วย ฉันขอถามได้ไหมว่าความล่าช้าขั้นต่ำหมายถึงอะไร   -  person LKM    schedule 16.03.2015


คำตอบ (1)


มันใช้งานได้ใน Wifi เพราะคุณใช้ที่อยู่ IP และผู้ให้บริการของคุณเอง ในเครือข่ายเซลลูลาร์ คุณเรียกใช้คำขอผ่านผู้ให้บริการของคุณ ซึ่งโดยทั่วไปจะใช้พร็อกซีขาออก ดังนั้นเมื่อ Google ได้รับคำขอ ก็จะมองเห็น IP ของพร็อกซีของผู้ให้บริการของคุณสำหรับลูกค้าทั้งหมด ไม่ใช่ IP ของคุณเอง ไม่เหมือนในกรณีของ wifi

อย่างน้อยนั่นคือข้อสรุปที่ฉันพบเมื่อฉันประสบปัญหาที่คล้ายกันเช่นกัน โดยพิจารณาจากประสบการณ์และการจับแพ็กเก็ต

  • ซึ่งหมายความว่าทุกคำขอที่ดำเนินการจากเครือข่ายโทรศัพท์เคลื่อนที่ที่ดำเนินการโดยผู้ให้บริการของคุณดูเหมือนจะมาจาก IP เดียวกันสำหรับ Google ซึ่งจะเป็นการเพิ่มจำนวนคำขอสำหรับ IP ที่กำหนดนี้ อย่างน้อยก็จากมุมมองของเซิร์ฟเวอร์ของ Google ดังนั้น หากทั้งคุณ เพื่อนบ้าน และผู้คนหลายล้านคนที่ใช้ผู้ให้บริการรายเดียวกันส่งคำขอไปยัง Google และผู้ให้บริการรายนี้ใช้พร็อกซีขาออกเดียวกัน Google อาจดูเหมือนเห็น IP เดียวกันสำหรับหลายล้านคน/คำขอเหล่านั้น และจะพิจารณา ถึงขีดจำกัดโควต้าแล้ว

  • หากคุณเรียกใช้คำขอผ่านเครือข่าย wifi ของคุณ คุณจะไม่ผ่านพร็อกซีขาออกของผู้ให้บริการเครือข่ายมือถือของคุณ และจะมี IP ขาออกของคุณเอง และจะสามารถทำคำขอได้มากขึ้นก่อนที่จะเห็นข้อผิดพลาด "LIMIT EXCEEDED" เพียงอย่างเดียว คำขอของคุณเองจะถูกนับ

ฉันเชื่อว่าในความเป็นจริงแล้ว ที่จริงแล้วมีความซับซ้อนกว่าเล็กน้อย: ผู้ให้บริการของคุณอาจมีพร็อกซีขาออกหลายรายการ และใช้การปรับสมดุลโหลดเพื่อส่งคำขอของลูกค้าไป Google อาจมีฐานข้อมูลที่รู้จักพร็อกซีของผู้ให้บริการ CN หลักและปรับเปลี่ยน จำกัดโควต้าตามนั้น ฯลฯ... แต่คุณคงเข้าใจแนวคิดนี้แล้ว

person AliSoftware    schedule 03.10.2012
comment
นี่คือสิ่งที่ฉันคิดในตอนแรก แต่ปัญหาจะหายไปเมื่อฉันเพิ่มความล่าช้าครึ่งวินาทีระหว่างแต่ละคำขอ ฉันสงสัยว่าอาจมีเวลาแฝงมากกว่า wifi ด้วยเหตุผลบางอย่างหรือไม่ และนี่จะเพิ่มความล่าช้าเพียงพอระหว่างคำขอเพื่อป้องกันไม่ให้ Google บล็อกการเข้าถึง ดูเหมือนว่าไม่น่าจะมีเวลาแฝงน้อยลงบนเครือข่ายเซลลูล่าร์ แม้ว่า... - person bmat; 04.10.2012