python-3.x REST API使用curl但不使用请求

yrdbyhpb  于 2023-07-01  发布在  Python
关注(0)|答案(1)|浏览(114)

我有这个命令:

import requests

url = "https://api.opensubtitles.com/api/v1/download"

payload = {"file_id": id_to_download}
headers = {
    "Content-Type": "application/json",
    "Api-Key": "myApiKey",
    "Authorization": "Bearer myApiKey"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)

那个回来了

{                                                                                                                                
  "message":"You cannot consume this service"                   
}

当控制台版本完美运行时:

curl --request POST --header 'Api-Key: myApiKey' --url https://api.opensubtitles.com/api/v1/download --header 'Content-Type: application/json, Authorization: Bearer undefined' --data '{"file_id": 934267}'

{"link":"https://www.opensubtitles.com/download/901E4D16AF81FF191D37B3D10AD6517A2ECE30F77679205199EF4742C5595022275ADBA60A53E73F444E251FA5B71825CA101C199D469B02264AFCCC46F1AAAF966A8197FA479E70CC58EE2D1D89FFCB04226FB33DCECBBB3BFF04F888E5CAC73C8D9813FCF84245B7AC80F9B5B18E386524F881292F0EFE45A534879E2AC7D6B92BB55BF6F5E948F6D1A586809E5723BFDA861BB0E6E842AAFB71D5A74ADC9BFB95C067D7B853C9BA2C5819726E5D90536DA0AC9EBB282602133CBECF24E1DDC1337731FEB652A384059CA4D5452F62FC4325C7D75BDA6B9AE06CCE34A1DA872B15DD28BD0D90C548BB122C38ADF8267DA29F7418C8C5F6BDD3A423F8CC20904BC2D8960A1C0C9B30A9CE0EFDC65CCBC696EE74666CE631B17F1139C7D95507CFCAAF65B5D4370C/subfile/Magic.Mike.XXL.2015.720p.BluRay.x264-GECKOS.srt","file_name":"Magic.Mike.XXL.2015.720p.BluRay.x264-GECKOS.srt","requests":8,"remaining":92,"message":"Your quota will be renewed in 16 hours and 06 minutes (2022-10-24 01:25:09 UTC) ","reset_time":"16 hours and 06 minutes","reset_time_utc":"2022-10-24T01:25:09.000Z"}%

请注意"requests":8,"remaining":92,"message":"Your quota will be renewed in 16 hours and 06 minutes (2022-10-24 01:25:09 UTC) ","reset_time":"16 hours and 06 minutes","reset_time_utc":"2022-10-24T01:25:09.000Z"部分,因此显然这与配额无关。所有其他请求都可以工作,通常是这一个:

url = "https://api.opensubtitles.com/api/v1/subtitles"
    
querystring = {"query": movie_name,
               "languages": "en"}

headers = {
    "Content-Type": "application/json",
    "Api-Key": "myApiKey"
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)

完美的工作。你知道什么会导致POST请求失败吗?

hsgswve4

hsgswve41#

奇怪的是,对我来说,我的帖子请求的json.dumps()做到了这一点:

response = requests.post(url, headers=headers, data=json.dumps(data))

相关问题