Google Place Text Search异常:第二个next page token请求返回Invalid_Request
以下是几个实测有效的解决思路,针对你遇到的第二次调用返回Invalid_Request的情况:
严格确保分页请求参数完全一致
pagetoken是和首次请求的搜索参数(如text、location、radius、type等)强绑定的,只要后续请求的任何一个参数和首次不一致,就会直接返回Invalid_Request。检查你第二次请求的所有参数,除了新增的pagetoken,其他必须和第一次完全相同,包括参数的大小写、编码格式。延长请求间隔至2-3秒以上
虽然你加了1000ms延迟,但Google的pagetoken生成后可能需要一定时间同步到全球的API节点,尤其是在高并发时段。把延迟调整到2000-3000ms,确保token在服务器端完全生效后再发起下一次请求。添加缓存破坏参数绕开缓存
在每次请求的URL末尾追加一个无意义的随机参数,比如&cb=${Math.random()}或者×tamp=${Date.now()}。因为HTTP缓存通常是基于完整URL的,添加随机参数后每次请求的URL唯一,就能避免被中间缓存(比如CDN、浏览器缓存)拦截,确保请求直接到达Google的API服务器。检查pagetoken的传递完整性
确认你从第一次响应中提取的pagetoken没有被截断、转义错误。pagetoken包含特殊字符,在拼接URL时要确保正确编码(比如用encodeURIComponent()处理后再拼接),避免因为字符编码问题导致token失效。查看详细错误信息定位问题
不要只看Invalid_Request这个笼统的错误,查看API返回的完整响应体,里面通常会有error_message字段,给出具体的失效原因(比如"pagetoken has expired"、"invalid pagetoken"),根据具体信息针对性调整。
内容的提问来源于stack exchange,提问作者Arijit Bhattacharjee

