Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запрос SOAP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите правильно построить запрос
Intrerio
Отправлено: 27 Сентября, 2017 - 14:30:34
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




Здравствуйте друзья. Никогда не имел ничего общего с SOAP и сейчас очень остро стало научиться работать правильно с ним. Перечитал php.net - ничего толкового не прочитал. Общие тезисы и нет конкретики. Даже в банальном $action я не могу понять что тут должно быть. Есть задача построить запрос на конкретный адрес: https://policyrw[dot]mtsbu[dot]ua/v3/Cha[dot][dot][dot]ontracts[dot]svc/New . Разработчик сервиса предоставил пример запроса который должен быть послан:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://kitsoft.kiev.ua/mtsbu/2017/06/21" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  3.    <soapenv:Header>
  4.                 <o:Security soapenv:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  5.                         <o:UsernameToken>
  6.                                 <o:Username>6975EC75-921D-4263-B7F5-DC61A2509564</o:Username>
  7.                         </o:UsernameToken>
  8.                 </o:Security>
  9.    </soapenv:Header>
  10.    <soapenv:Body>
  11.       <ns:GetSignFromRequest>
  12.          <ns:digSignRequest>
  13.             <ns:Contract>
  14.                <ns:Address>123</ns:Address>
  15.                <ns:AutoDescr>1234</ns:AutoDescr>
  16.                <ns:BirthDate>2005-07-22T00:00:00+02:00</ns:BirthDate>
  17.                <ns:DBonusMalusID>DBonusMalus_13</ns:DBonusMalusID>
  18.                <ns:DCitizenStatusID>DCitizenStatus_1</ns:DCitizenStatusID>
  19.                <ns:DCityID>0</ns:DCityID>
  20.                <ns:DDiscountID>DDiscount_5</ns:DDiscountID>
  21.                <ns:DExpLimitID>DExpLimit_2</ns:DExpLimitID>
  22.                <ns:DMarkID>0</ns:DMarkID>
  23.                <ns:DModelID>0</ns:DModelID>
  24.                <ns:DPeriodID>DPeriod_11</ns:DPeriodID>
  25.                <ns:DPersonStatusID>DPersonStatus_1</ns:DPersonStatusID>
  26.                <ns:DPrivelegeID>DPrivelege_3</ns:DPrivelegeID>
  27.                <ns:DSphereUseID>DSphereUse_2</ns:DSphereUseID>
  28.                <ns:DVehicleTypeID>DVehicleType_12</ns:DVehicleTypeID>
  29.                <ns:DateNextTO>2015-11-16T03:02:33.517202+02:00</ns:DateNextTO>
  30.                <ns:Franchise>0</ns:Franchise>
  31.                <ns:IdentCode>1234567890</ns:IdentCode>
  32.                <ns:InsPremium>1</ns:InsPremium>
  33.                <ns:Name>123</ns:Name>
  34.                <ns:PName>456</ns:PName>
  35.                <ns:ProdYear>1975</ns:ProdYear>
  36.                <ns:RegNo>AC6548ДЕ</ns:RegNo>
  37.                <ns:StartDate>2015-11-16T02:57:33.517202+02:00</ns:StartDate>
  38.                <ns:Surname>123</ns:Surname>
  39.                <ns:VIN>12345</ns:VIN>
  40.                <ns:VehicleUsage>000101001110</ns:VehicleUsage>
  41.                <ns:k1>0.1</ns:k1>
  42.                <ns:k2>0.1</ns:k2>
  43.                <ns:k3>0.1</ns:k3>
  44.                <ns:k4>0.1</ns:k4>
  45.                <ns:k5>0.1</ns:k5>
  46.                <ns:k6>1</ns:k6>
  47.                <ns:k7>1</ns:k7>
  48.             </ns:Contract>
  49.             <ns:InputMessageID>testRequest</ns:InputMessageID>
  50.          </ns:digSignRequest>
  51.       </ns:GetSignFromRequest>
  52.    </soapenv:Body>
  53. </soapenv:Envelope>
  54.  

Начал лепить статую, получил вазу - это о моем запросе на текущий момент. Помогите примером чтоб я мог его разобрать и понять что куда или грамотным ответом,.Благодарю
 
 Top
andrewkard
Отправлено: 27 Сентября, 2017 - 17:02:47
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Intrerio пишет:
Начал лепить статую, получил вазу - это о моем запросе на текущий момент.

главное у Вас хоть есть от чего оттолкнуться, полный пример запроса.
PHP:
скопировать код в буфер обмена
  1.  
  2. // Create the SoapClient instance
  3. $url         = "";
  4. $client     = new SoapClient($url, array("trace" => 1, "exception" => 0));
  5.  
  6. $headers = [
  7.     'Username' => 'log',
  8.     'Password' => 'psw',
  9. ];
  10.  
  11. $header = new SoapHeader("http://www.example.com/webservices/", "APICredentials", $headers);
  12.  
  13. // Call wsdl function
  14. $result = $client->__soapCall("DeleteMarketplaceAd", array(
  15.     "DeleteMarketplaceAd" => array(
  16.         "accountID"        => $accountId,
  17.         "marketplaceAdID"    => "9938745"    
  18.     )
  19. ), NULL, $header);
  20.  
  21. $_request = $client->__getLastRequest();
  22. $_response = $client->__getLastResponse();
  23.  
  24.  


по факту смотрите что уходит в $_request
 
 Top
Intrerio
Отправлено: 28 Сентября, 2017 - 10:25:50
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




andrewkard пишет:
Intrerio пишет:
Начал лепить статую, получил вазу - это о моем запросе на текущий момент.

главное у Вас хоть есть от чего оттолкнуться, полный пример запроса.
PHP:
скопировать код в буфер обмена
  1.  
  2. // Create the SoapClient instance
  3. $url         = "";
  4. $client     = new SoapClient($url, array("trace" => 1, "exception" => 0));
  5.  
  6. $headers = [
  7.     'Username' => 'log',
  8.     'Password' => 'psw',
  9. ];
  10.  
  11. $header = new SoapHeader("http://www.example.com/webservices/", "APICredentials", $headers);
  12.  
  13. // Call wsdl function
  14. $result = $client->__soapCall("DeleteMarketplaceAd", array(
  15.     "DeleteMarketplaceAd" => array(
  16.         "accountID"        => $accountId,
  17.         "marketplaceAdID"    => "9938745"    
  18.     )
  19. ), NULL, $header);
  20.  
  21. $_request = $client->__getLastRequest();
  22. $_response = $client->__getLastResponse();
  23.  
  24.  


по факту смотрите что уходит в $_request

А подскажите пожалуйста, файл wsdl можно как то прощупать, есть ли он на сервере? Я просто не до конца понимаю какой вариант лучше использовать с wsdl или без
 
 Top
Intrerio
Отправлено: 28 Сентября, 2017 - 13:36:52
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




Поправте если не прав:
Есть у меня выше приведенный пример запроса. Я должен сделать сервер SOAP, згенерировать файл wsdl в который запихнуть запрос. А потом уже эту всю кухню отправлять на удаленный адрес?
 
 Top
andrewkard
Отправлено: 28 Сентября, 2017 - 15:09:51
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Intrerio пишет:
згенерировать файл wsdl

сгенерировать запрос в формате xml и его отправить
 
 Top
Vladimir Kheifets
Отправлено: 28 Сентября, 2017 - 22:06:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Добрый вечер! Поскольку Вы пишите:
"Разработчик сервиса предоставил пример запроса который должен быть послан..."
Вам требуется отправлять запросы на сервис т.е. требуется разработать клиентскую часть.

1. Пример реализации PHP c сURL и simplexml_load_String (c WSDL)
Посмотрите, пожалуйста, примеры клиентских PHP-скриптов GDS Travelport:
https://github[dot]com/Travelport/tr[dot][dot][dot]ree/master/Hotel
Для начала посмотрите как отправить запрос на сервис:
https://github[dot]com/Travelport/tr[dot][dot][dot]Sample_index.php
и как парсить Response использую PHP-класс simplexml_load_String
https://github[dot]com/Travelport/tr[dot][dot][dot]_HotelDetail.php

2. Пример реализации на PHP SoapClient (c WSDL)
HotelsPro API 4.1
Service Application Document

http://www[dot]google[dot]de/url?sa=t&am[dot][dot][dot]KbF3sCHHG1SMtExA
см. 2.3 SOAP PHP sample project

3. Пример реализации на PHP SoapClient (без WSDL)
API Alto-Booking
https://www[dot]alto-booking[dot]com/dem[dot][dot][dot]/SOAP/client.php
описание методов:
https://www[dot]alto-booking[dot]com/dem[dot][dot][dot]_AltoBooking[dot]pdf
исходный код клиента:
https://www[dot]alto-booking[dot]com/dem[dot][dot][dot]P/DemoClient[dot]zip

Удачи!

(Отредактировано автором: 29 Сентября, 2017 - 07:47:41)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB