我目前正在开发一个Django Web应用程序,该应用程序应该为基于InSales(一种流行的俄罗斯网络平台)的在线商店添加一些功能。我使用名为pyinsales
的官方InSales lib来获取来自注册商店的订单和产品等对象。
InSales API基于使用XML的REST请求。我使用下面的代码获取有关Django shell中的订单的信息:
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()
此处shop.shop_url
是商店网址(“哦,真的吗?”),trackpost是我的应用名称,shop.password
是连接所需的密码。密码由MD5生成(这是InSales规则)。在这里我收到一个错误:
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'
我已经检查过所有错误。密码生成正确(根据官方文档),商店URL正确,并且正确使用了lib中的所有方法。 InSales技术支持没有响应,所以现在我不知道发生了什么。
我不想让你调试这个问题,但我想知道什么可能导致404错误(除了明显的事情,比如错误的URL或密码)。谢谢所有试图回答的人。
答案 0 :(得分:0)
404表示服务器找不到您要求的内容。
https://en.wikipedia.org/wiki/HTTP_404
因此,这不是身份验证问题,似乎该特定端点没有订单。
您是否尝试使用python“requests”包而不是使用“pyinsales”模块直接从端点请求数据?这样您就可以自定义自己的标题等。
您也可以尝试在postman等程序中测试端点,以确保在尝试以编程方式命中端点之前端点是有效的。
答案 1 :(得分:0)
分析github上的pyinsales代码,我意识到 url 应该是 myinsales 域上的子域名,所以如果完整的URL是 http:// shop.myinsales.ru / 那么pyinsales中的第一个参数应该是 shop 。遗憾的是,没有人在该模块上指出,在自述文件中,这样的事情发生了