Github-api daje 404 podczas przekazywania danych json z python + urllib2
Mam następujący kod, który powinien wykonać pierwszą część tworzenia nowego pobrania w github. Powinien wysłać dane json za pomocą POST.
<code>jsonstring = '{"name": "test", "size": "4"}' req = urllib2.Request("https://api.github.com/repos/<user>/<repo>/downloads") req.add_header('Authorization', 'token ' + '<token>') result = urllib2.urlopen(req, jsonstring) </code>
Jeśli usunę, jsonstring
zurlopen()
, nie zawodzi i daje mi listę dostępnych plików do pobrania. Jeśli jednak spróbuję POST ciągu json, otrzymuję błąd 404.
Problemem musi być json lub sposób, w jaki go wysyłam, ale nie wiem, na czym polega problem. Struny w<...>
znajdują się dokładnie w rzeczywistym kodzie, właśnie usunąłem je z posta
Próbowałem mniej więcej tak samocurl
w linii poleceń, z nieco inną metodą uwierzytelniania i działało.
Przetestowany:
Działa (zwraca poszukiwany json):
<code>curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads </code>
Prace:
<code>curl -H 'Authorization: token <token>' https://api.github.com/ </code>
Nie działa (zwraca „nieprawidłowe poświadczenia”):
<code>curl -H 'Authorization: token <invalid_token>' https://api.github.com/ </code>
Nie działa („nie znaleziono”):
<code>curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads </code>
Wydaje się, że nie jest to problem specyficzny dla kodu Pythona. Dane json POST wydają się być w porządku, a autoryzacja tokenu OAuth wydaje się (przynajmniej częściowo) działać. Ale kiedy są one połączone, przestaje działać.