2017-01-23 3 views
0

현재 InSales (인기있는 러시아어 웹 플랫폼)를 기반으로하는 온라인 상점에 일부 기능을 추가해야하는 Django 웹 응용 프로그램을 개발 중입니다. 나는 pyinsales이라는 공식 InSales lib 디렉토리를 사용하여 주문제품 등록 된 상점에서 물건을 얻을.API GET 요청이 404를 반환합니다.

InSales API는 XML이 포함 된 REST 요청을 기반으로합니다. 가게의 URL은 다음

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

, 나는 URLmyinsales 도메인에 하위 도메인 이름이어야합니다 것을 깨달았다, 그래서 전체 URL은 http://shop.myinsales.ru/ 첫 번째 인수 인 경우 Pyinsales에서 가게해야합니다. 그건 불쌍한데 그 모듈에서 일하는 사람은 아무 말도하지 않았다.하지만 그런 일들은 일어난다.

0

404는 서버가 사용자가 요청한 것을 찾을 수 없다는 것을 의미합니다. 특정 엔드 포인트에서 더 주문이없는 것처럼

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

그래서이 인증 문제가 아니라, 그것은 보인다.

"pyinsales"모듈을 사용하여 엔드 포인트에서 직접 데이터를 요청하는 대신 python "requests"패키지를 사용해 보셨습니까? 그 방법으로 자신의 헤더 등을 사용자 정의 할 수 있습니다.

프로그래밍 방식으로 적중을 시도하기 전에 끝점이 유효한지 확인하기 위해 우편 배달부와 같은 프로그램에서 끝점을 테스트 해 볼 수도 있습니다. GitHub의에 pyinsales 코드를 분석

+0

글쎄, 그건 너무 분명하다 (나는 모두가 404를 알고 있다고 확신한다). 재미 있은 무엇 - 나는 상점의 통제가있다. ** 거기에 ** 물건이 있다는 것은 틀림 없습니다. 'requests'를 사용하는 것은 공식 모듈이있을 때 매우 불편합니다. 그래서 그것을 사용하고 싶지 않습니다. 그러나 어쨌든 고마워요 –

+0

끝점 자체가 제대로 작동하는지 확인 했습니까? 우편 배달부와 같은 말풍선이나 프로그램을 사용하여 끝점을 치려고하면 작동합니까? – jasonleehodges

+0

InSales는 매우 개인적이고 잘 ... 닫힌 플랫폼이기 때문에 확인하기가 꽤 어렵습니다. 하지만 사이트 자체가 작동하고 동일한 API를 사용하는 많은 다른 앱과 작동하기 때문에 엔드 포인트가 작동하는 것만으로도 충분합니다. –

관련 문제