Python requests发POST请求提示System.Int32类型参数okres为空如何解决
报错原因说明
该报错是后端ASP.NET MVC框架抛出的,核心原因是接口要求接收非空整数类型的okres参数,但服务端解析请求时没有拿到有效参数,识别为null导致的。
排查步骤
- 调整参数传递格式
多数情况下该问题是参数格式和后端要求不匹配导致的:
如果你要提交JSON格式参数,不要使用data参数,改用requests的json参数即可:
如果后端要求接收表单格式参数,检查你的请求头中是否错误设置了getGrades = Session.post( 'https://some_website_i_want_to_send_post_request', headers=headers, json={'okres': 41618} )Content-Type: application/json,删除该配置即可,requests使用data参数时会自动设置正确的表单类型头。 - 核对参数传递位置
部分POST接口要求参数放在URL查询串中而非请求体内,你可以尝试把参数拼接到URL后测试:getGrades = Session.post( 'https://some_website_i_want_to_send_post_request?okres=41618', headers=headers ) - 核对参数名称与大小写
确认接口要求的参数名是否确实为okres,是否存在大小写差异,比如是否需要为首字母大写的Okres,可以对照浏览器正常请求的参数名完全匹配填写。 - 验证会话状态有效性
确认当前Session是否已经拿到了接口需要的鉴权cookie、CSRF令牌等信息,部分接口鉴权失败时会返回与参数相关的错误提示,你可以使用浏览器抓包拿到的全量请求头、cookie直接发起单次请求测试,排除会话失效问题。
内容的提问来源于stack exchange,提问作者Gorge
相关产品推荐
相关产品推荐

