|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Python. Suds. Построение запроса к API.  XML
Индекс форума » Компонент МЕРКУРИЙ
Автор Сообщение
Semertak


Зарегистрирован: 11/12/2017 13:30:20
Сообщений: 3
Оффлайн

Цель: Работа с API средствами suds в Python.
Задача: При помощи инструмента suds сконструировать верный запрос к бизнес-методу сервиса Меркурий.
Проблема: Не получается задать содержимое поля data типа ApplicationDataWrapper.
Моя попытка:

Эти и некоторые другие действия создают следующий запрос:

Результат выполнения этого метода: "Unsupported application data format"

Ошибка этого запроса видна в строке №20.
Если исправить пространство имен с "ns3" на тип "ns4", то запрос будет валидно исполняться, а бизнес-метод GetStockEntryListRequest будет возвращать ожидаемый результат.

Проблема в том, что для поля getStockEntryListRequest я и так задавал пространство имен "ns4". Это видно в моем python-коде.
Не понимаю в чем проблема.
Готов с радостью принять любой возможный метод решения моей проблемы, а также любой альтернативный способ соединить Python и Меркурий.

UPD.
Названия ссылок на ns в Питон-реализации могут отличаться от названий ссылок в итоговом запросе. Это нормально.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 14/12/2017 14:08:03

Vladimir2017

[Avatar]

Зарегистрирован: 02/10/2017 14:31:03
Сообщений: 362
Оффлайн

Про питон ничего не скажу, пишу на Дельфи, запросы собираю вручную. Беру шаблон документа и модифицирую его средствами xml или текстовой подстановкой. Если бы начинал сейчас, вобще бы целиком в тексте собирал, всяко быстрее. WSDL оставил только для справочников, потому что там проблем нет.
Vladimir2017

[Avatar]

Зарегистрирован: 02/10/2017 14:31:03
Сообщений: 362
Оффлайн

Вдогонку: у Вас там подставляется подставляется неймспейс из версии 1.3-1.4, а запрос Вы отправляете на сервис второй версии. Проверьте импорт WSDL, похоже проблема там.
Semertak


Зарегистрирован: 11/12/2017 13:30:20
Сообщений: 3
Оффлайн

Vladimir2017, не уверен что в них есть ошибка. Импорт и описание ns-ов происходит автоматически. Либо я не понимаю что вы имеете ввиду.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 14/12/2017 13:14:14

Vladimir2017

[Avatar]

Зарегистрирован: 02/10/2017 14:31:03
Сообщений: 362
Оффлайн

Есть две версии API:

В версии 1.4 у getStockEntryListRequest неймспейс http://api.vetrf.ru/schema/cdm/application
В версии 2.0 у getStockEntryListRequest неймспейс http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2

У Вас указаны оба, но подставляется неправильный. Подставляться он может только если он неправильно импортировался.

P.S. Кстати у Вас и для Application подставляется не тот неймспейс, который Вы указываете. Возможно его надо указывать другим способом.
Semertak


Зарегистрирован: 11/12/2017 13:30:20
Сообщений: 3
Оффлайн

Vladimir2017. По поводу неправильной подстановки неймспейса для Application. Это, видимо, особенность suds. Если в Питон я указываю "ns0:Application", то в итоговом запросе вместо "ns0" может быть любое имя. Точнее цифра. Suds просто по каким-то своим законам меняет названия ссылок для итогового запроса.

А по поводу первого пункта.... Надо посмотреть.
 
Индекс форума » Компонент МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team