5sim.net API对接:首个while循环内if不触发、第二个while循环不运行排查
问题根因与修复
核心错误:状态字段拼写错误
5sim官方API返回的等待短信状态的正确枚举值是RECEIVED,你代码中全部写成了拼写错误的RECIEVED(字母e和i顺序颠倒),直接导致两个故障:
- 第一个循环内的if判断永远匹配不到正确的状态值,无法触发
- 第一个循环退出后,拉取到的正确
RECEIVED状态和你写的RECIEVED匹配失败,第二个while循环直接不进入
额外逻辑优化
你第一个while循环的执行顺序不合理:先更新状态再休眠打印,会导致首次拉取就已经跳出PENDING状态时,多执行一次无意义的等待,调整执行顺序即可。
修复后代码
while 'PENDING' in sms['status']: print('Waiting for phone no. to get activated.') time.sleep(5) sms = get_status(headers, id) if sms['status'] == 'RECEIVED': print('Phone no. is activated.') break time.sleep(2) while 'RECEIVED' in sms['status']: print('Waiting for SMS code') time.sleep(5) sms = get_status(headers, id) if sms['status'] == 'FINISHED': break
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

