Python获取Token失败:POST请求响应非有效JSON,求技术协助
问题分析与解决方案
排查步骤与修复建议
- 先确认服务器返回的实际内容:在异常块中添加代码打印响应状态码和原始文本,搞清楚服务器到底返回了什么(比如错误页面、空内容或非JSON字符串):
res = self.session.post(url=self.url, data=json.dumps(data), headers=self.h, verify=False) try: js = res.json() token = js['token'] self.cookie['reese84'] = token print(fg + ' (success)') return token except ValueError: print(f"响应状态码: {res.status_code}") print(f"响应原始内容: {res.text}") print("Response content is not valid JSON")
- 修正请求头与数据传递方式:你手动用
json.dumps(data)构造请求体,但如果请求头里没有Content-Type: application/json,服务器可能无法识别JSON格式,从而返回非JSON响应。推荐直接使用requests的json参数,它会自动处理序列化和请求头:
res = self.session.post(url=self.url, json=data, headers=self.h, verify=False)
如果坚持手动构造,务必在self.h中添加:
self.h['Content-Type'] = 'application/json'
- 检查响应编码:若服务器返回内容编码异常,会导致
res.text乱码,无法解析JSON。可以手动指定编码:
res.encoding = 'utf-8' # 根据实际情况调整,比如gbk、utf-16等
- 验证状态码:非200范围内的状态码(如4xx错误、3xx重定向)通常伴随非JSON响应,通过
res.status_code可以快速判断是否请求本身就失败了。
内容的提问来源于stack exchange,提问作者hasnain hakim
相关产品推荐
相关产品推荐

