XML-запрос + Delphi
От: YuRock Украина  
Дата: 12.06.14 16:46
Оценка:
Добрый день!

Столкнулся с проблемой составления запроса через делфовые средства.

Вот рабочий запрос (полученный сниффером, генерился из 1С):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Header/>
 <soap:Body>
  <m:CheckBalance xmlns:m="http://comarch.pl/loyalty/web/ws/clm">
   <CheckBalance xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <m:type>B</m:type>
   </CheckBalance>
  </m:CheckBalance>
 </soap:Body>
</soap:Envelope>


Вот максимально похожий запрос, который я смог получить (он не работает — в ответе сервера приходит "operation description is missing parameter description")
на Delphi 7 с помощью HTTPRIO (версия, думаю, тут не важна):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soap:Body>
  <CheckBalance xmlns="http://comarch.pl/loyalty/web/ws/clm">
   <type>B</type>
  </CheckBalance>
 </soap:Body>
</soap:Envelope>


Такое получил с помощью
InvRegistry.RegisterInvokeOptions( TypeInfo(iLPPort), ioDocument );
в initialization WSDL'ки и правки константы SSoapNameSpacePre с SOAP-ENV на soap в SOAPConst.pas

Если у кого есть идеи, как еще приблизить мой запрос работающему — поделитесь, пожалуйста.
Особенно интересует "добавочный" уровень вложенности m:CheckBalance и вообще приставка "m:" в параметрах (m: — я так догадываюсь, какая-то область видимости). Как заставить делфи генерить такое?

Спасибо всем.

ЗЫ модераторам — может этот вопрос перенести в конференцию делфи? я не уверен просто.
Re: XML-запрос + Delphi
От: glh Россия  
Дата: 07.10.14 13:46
Оценка: +1
Здравствуйте, YuRock, Вы писали:

YR>Вот рабочий запрос (полученный сниффером, генерился из 1С):


Маленький хинт: 1C умеет только SOAP 1.2 стилем Document/Literal.

YR>на Delphi 7 с помощью HTTPRIO (версия, думаю, тут не важна):

Я бы все-таки проверил, тк D7 от 2001 года и держит SOAP1.1 максимум.
XE как клиент, умеет все стили до SOAP 1.3 включительно.
Как сервер(native), только RPC/Encoded.

YR>Если у кого есть идеи, как еще приблизить мой запрос работающему — поделитесь, пожалуйста.

WSDL где?

YR>Особенно интересует "добавочный" уровень вложенности m:CheckBalance и вообще приставка "m:" в параметрах (m: — я так догадываюсь, какая-то область видимости). Как заставить делфи генерить такое?

m: это фигня, это указание на пространство имен.

А вот вложенный уровень выглядит подозрительно.

PS. А вообще у COMARCH с IT не все гладко, корпоративный стиль такой, через ж... IMHO
Работаем с ними...
Успехов!
C уважением, Алексей.
------------------------------------------------
Хороших %s не бывает — бывает не худший вариант.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.