Опитвам се да преведа следната команда curl в извикване на API за заявка на python:
curl --header "Content-Type: application/octet-stream" --request PUT --data-binary @content.tar.gz <upload_url>
Стигнах дотам да направя:
import requests
data = open("content.tar.gz", "rb").read()
response = requests.put(
<upload_url>,
headers={"Content-Type": "application/octet-stream"},
data=data
)
Въпреки че кодът на състоянието от горното извикване е 200, файлът content.tar.gz
не изглежда да се качва, докато командата curl работи безупречно.
Разгледах много различни въпроси относно превода на curl команди в заявки на python, но не открих причини защо това не трябва да работи, когато командата curl го прави.
Надявам се, че можете да ми дадете някои насоки за това, което правя грешно.
curl
с подробна опция, за да видите какво всъщност се случва, защотоcurl
обработва някои HTTP сложности зад кулисите. Ако имате достъп до регистрационни файлове от страната на сървъра, проверката им може да помогне. Иначе кодът ви изглежда добре. Опитах го срещу този прост httpсървър, поддържащ PUT: gist.github.com/fabiand/5628006 и той работеше. - person bagljas   schedule 14.04.2021