使用textbelt.com发送SMS时出现JSONDecodeError问题求助
问题排查与解决
错误原因分析
你遇到的JSONDecodeError本质是服务器返回的响应内容不是有效的JSON格式,甚至可能是空内容。常见触发场景包括:
- Textbelt免费密钥
textbelt仅支持美国/加拿大号码,摩洛哥区号+212不在免费服务覆盖范围内 - 免费密钥每日发送次数耗尽,服务器返回非JSON格式的错误页面
- 网络连接异常,导致请求未成功送达或响应为空
排查与修复步骤
1. 先确认服务器返回的原始响应
修改代码,先打印响应状态码和原始文本,定位具体问题:
import requests resp = requests.post('https://textbelt.com/text', { 'phone' : '+21276355555', 'message': 'Hello sidi khelkhel ... goodmorninggg wolh ..LBOUGHAZZ .\n..I love you wolh ', 'key': 'textbelt' }) print("状态码:", resp.status_code) print("原始响应内容:", resp.text) try: print("解析结果:", resp.json()) except Exception as e: print(f"JSON解析失败原因: {str(e)}")
2. 根据排查结果针对性解决
如果状态码是4xx/5xx+响应为HTML错误页:
免费密钥不支持摩洛哥号码,需要购买Textbelt付费密钥,替换代码中的'key': 'textbelt'为你的付费密钥。如果状态码是200但响应为空:
检查本地网络是否能正常访问Textbelt服务,尝试更换网络环境(比如手机热点)重试。如果提示发送次数超限:
等待次日重置免费额度,或直接升级为付费账户。
3. 额外注意事项
- 确保电话号码格式正确:必须包含国际区号,如
+212xxxxxxxxx - 消息内容避免特殊字符导致的编码问题(你的当前内容看起来没问题)
内容的提问来源于stack exchange,提问作者Lboughazz Code
相关产品推荐
相关产品推荐

