Python转换Curl POST请求出现405状态码,求问题排查
问题排查与修正方案
你的POST请求返回405(方法不允许),结合提供的curl命令和代码,主要有以下几个问题需要修正:
1. URL协议与查询参数不匹配
curl命令中使用的是HTTPS协议,且URL携带了jwt=token查询参数,但你的Python代码用的是HTTP协议,且未包含该参数。服务器的路由可能仅匹配HTTPS且带jwt参数的POST请求,这是导致405的核心原因之一。
2. 请求Content-Type不一致
curl的--form参数会发送multipart/form-data类型的请求,而你使用requests.post(..., data=data)会发送application/x-www-form-urlencoded类型的请求,服务器可能只接受前者,这也会引发请求不被允许的错误。
3. ids参数格式不符
curl中ids的值是包含双引号的字符串("164,1408453"),但你的代码里直接传了不带引号的'164,1408453',参数格式不匹配可能导致服务器无法识别。
修正后的Python代码
import requests ACCESS_TOKEN = 'hereaccesstokenstring' # 保持ids值的双引号格式 data = { 'ids': '"164,1408453"' } headers = { 'Authorization': 'Bearer {}'.format(ACCESS_TOKEN), 'Accept': 'application/json' } # 使用HTTPS协议,添加jwt查询参数,并用files参数模拟curl的--form请求格式 response = requests.post( 'https://heretheurl?jwt=token', headers=headers, files=data ) # 打印响应信息辅助排查 print(response.status_code) print(response.text)
额外验证点
- 确认URL中
jwt=token的token值是否为真实有效的令牌(需匹配服务器的认证逻辑) - 你的GET请求能正常工作,说明Bearer token是有效的,Authorization头无需调整
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

