Cześć,
Jest to moje pierwsze spotkanie z API jako takim. Chciałem napisać prosty moduł łączący się z allegro WebApi za pomocą pythona. Łączę się za pomocą suds, i wszystko działa do momentu podania funkcji doGetItemsList zestawu filtrów przez parametr filterOptions który przyjmuje jedynie białe znaki. W innym wypadku zwraca błąd:
suds.WebFault: Server raised fault: 'Element '{https://webapi.allegro.pl/service.php}filterOptions': This element is not expected. Expected is one of ( {https://webapi.allegro.pl/service.php}sortOptions, {https://webapi.allegro.pl/service.php}resultSize, {https://webapi.allegro.pl/service.php}resultOffset, {https://webapi.allegro.pl/service.php}resultScope ).
'
Mimo, że nie mam pojęcia o xml sprawdziłem co to oznacza, według dokumentacji z pierwszego z wyrzucanych linków struktura elementu powinna wyglądać tak:
<filterOptions>
<item>
<filterId>category</filterId>
<filterValueId>
<item>7</item>
</filterValueId>
</item>
</filterOptions>
W jaki sposób zatem podać to pythonowi, żeby element przeszedł? Trochę miotam się w tym zagadnieniu więc nawet próbowałem parsować ten pliczek do zmiennej którą podawałem w argumencie, ale nadal otrzymuje ten sam wyjątek. Sama funkcja poniżej:
# obsługa połączenia zamknięta wcześniej w zmiennej client
def wynik(*args, **kwargs):
kwargs['webapiKey'] = 'webapiKey' # zmienna obslugujaca klucz webapi
kwargs['countryId'] = 1
kwargs['filterOptions'] = [] # pusta lista jako jedyne rozwiązanie które nie zwraca opisanego przeze mnie błędu, wyrzuca to co powinna, czyli zwrot o wartości 0 (brak pasujących wyszukań) plus drzewka kategorii, filtrów itp
return client.service.doGetItemsList(*args, **kwargs)