Ich entwickle gerade eine Django Webanwendung, die einigen Online-Shops einige Funktionen hinzufügen soll, die auf InSales (einer populären russischen Webplattform) basieren. Ich benutze die offizielle InSales-Lib für Python namens pyinsales
, um Objekte wie Bestellungen und Produkte von registrierten Geschäften zu bekommen.API GET Anfrage zurück 404
Die InSales-API basiert auf REST-Anforderungen mit XML. Ich verwende den Code folgende Informationen über Aufträge in dem Django-Shell zu erhalten:
from install.models import Shop
from insales import InSalesApi
shop = Shop.objects.get(shop_url='shop-url.myinsales.ru')
api = InSalesApi(shop.shop_url, 'trackpost', shop.password)
orders = api.get_orders()
Hier shop.shop_url
ist die Shop-URL, trackpost ist der Name meiner App und shop.password
wird das Passwort benötigt ("Oh, wirklich?") verbinden. Das Passwort wird von MD5 generiert (das ist eine InSales-Regel). Und hier bekomme ich einen Fehler:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.5/site-packages/insales/api.py", line 32, in get_orders
return self._get('/admin/orders.xml', {'per_page': per_page, 'page': page}) or []
File "/usr/local/lib/python3.5/site-packages/insales/api.py", line 291, in _get
return self._req('get', endpoint, qargs)
File "/usr/local/lib/python3.5/site-packages/insales/api.py", line 307, in _req
response = getattr(self.connection, method)(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/insales/connection.py", line 85, in get
return self.request('GET', path, qargs=qargs)
File "/usr/local/lib/python3.5/site-packages/insales/connection.py", line 70, in request
(method, path, resp.status, body), resp.status)
insales.connection.ApiError: GET request to /admin/orders.xml?page=1&per_page=25 returned: 404
b'<?xml version="1.0" encoding="UTF-8"?>\n<errors>\n <error></error>\n</errors>\n'
Ich habe schon alles auf Fehler überprüft. Das Passwort wird korrekt generiert (gemäß offizieller Dokumentation), die Shop-URL ist korrekt und alle Methoden aus der Lib werden korrekt verwendet. Der technische Support von InSales antwortet nicht, daher weiß ich jetzt nicht, was passiert.
Ich möchte nicht, dass Sie dieses Problem debuggen, aber ich möchte wissen, was den 404-Fehler verursachen kann (ausgenommen offensichtliche Dinge, wie falsche URL oder Passwort). Danke an alle die versuchen zu antworten.
Nun, das ist zu offensichtlich (ich wette jeder weiß, was 404 ist). Was ist lustig - ich habe die Kontrolle über den Laden. Ich bin mir sicher, dass da ** Objekte sind. Die Verwendung von 'Anfragen' ist ziemlich unangenehm, wenn es ein offizielles Modul gibt, also wollte ich es nicht benutzen. Aber trotzdem danke –
Haben Sie sichergestellt, dass der Endpunkt selbst funktioniert? Wenn Sie versuchen, den Endpunkt mit Curl oder einem Programm wie Postboten zu treffen, funktioniert es? – jasonleehodges
Nun, das ist ziemlich schwer zu überprüfen, weil InSales eine sehr private und gut ... geschlossene Plattform ist. Aber ich bin sicher, dass der Endpunkt funktioniert, weil die Site selbst funktioniert und mit vielen anderen Apps funktioniert, die dieselbe API verwenden –