2017-01-23 306 views
0

我目前正在開發一個Django Web應用程序,該應用程序應該在基於InSales(一種流行的俄語Web平臺)的在線商店中添加一些功能。我使用Python的官方InSales庫,名爲pyinsales,從註冊商店獲得訂單產品等對象。API GET請求返回404

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

分析github上pyinsales代碼,我意識到網址應該myinsales域是一個子域名,因此,如果完整的URL是http://shop.myinsales.ru/則第一個參數在pyinsales應該是。這是一個可惜沒有人在模塊上指出,在自述中,但這樣的事情發生

0

404意味着服務器找不到您請求的內容。

https://en.wikipedia.org/wiki/HTTP_404

所以它不是一個認證問題,好像沒有訂單在特定端點。

您是否嘗試過使用python「requests」包而不是使用「pyinsales」模塊直接從端點請求數據?這樣你可以自定義你自己的頭文件等等。

你也可以嘗試在郵件程序等程序中測試端點,以確保端點在你試圖以編程方式點擊它們之前是有效的。

+0

那麼,這太明顯了(我敢打賭大家都知道什麼是404)。有趣的是 - 我控制了商店。我確信那裏有**物品。當有一個官方模塊時,使用'requests'非常不舒服,所以我不想使用它。但是,無論如何感謝 –

+0

你確定端點本身的工作嗎?如果您嘗試使用curl或類似郵遞員的程序擊中端點,它是否有效? – jasonleehodges

+0

那麼,這是很難檢查,因爲InSales是一個非常私人和良好的封閉平臺。但我確信端點能夠正常工作,因爲網站本身可以工作,並且可以與許多使用相同API的其他應用程序一起工作 –