Найдено результатов: 8

Как легко использовать веб-сервис из PHP

Существует ли какой-либо инструмент для PHP, который можно использовать для генерации кода для использования веб-службы на основе ее WSDL ? Что-то сравнимое с щелчком "Add Web Reference" в Visual Studio или плагином Eclipse, который делает то же самое для Java.

php   web-services   visual-studio   wsdl    

464   7   16:03, 1st July, 2020


Веб-службы на основе документов или RPC

Я нутром чувствую, что веб-сервисы на основе документов предпочтительнее на практике - это опыт других людей? Их легче поддерживать? (Я заметил, что SharePoint использует любой для "document type" в своем интерфейсе WSDL, я думаю, что это делает его документальным).

Кроме того-теперь люди предлагают услуги типа WSDL и Rest для одной и той же функциональности? WSDL популярен для генерации кода, но для таких интерфейсов, как PHP и Rails, они, похоже, предпочитают rest.

web-services   rest   wsdl    

483   3   16:03, 1st July, 2020


Каков ваш предпочтительный метод отправки сложных данных через веб-сервис?

Это 2008 год, и я все еще разрываюсь на этом. Поэтому я разрабатываю веб-метод, который нуждается в сложном типе, передаваемом в него и возвращаемом из него. Два варианта, с которыми я играю, это:

  1. Передача и возврат реальных бизнес-объектов с данными и поведением. Когда wsdl.exe запускается, он автоматически создает прокси-классы, которые содержат только часть данных, и они будут автоматически преобразованы в мои реальные бизнес-объекты и из них на стороне сервера. На стороне клиента они будут использовать только тупой тип прокси, и им придется сопоставлять их с некоторыми реальными бизнес-объектами, как они считают нужным. Большой недостаток здесь заключается в том, что если я "own" как серверная, так и клиентская сторона, и я хочу использовать один и тот же набор реальных бизнес-объектов, я могу столкнуться с определенными головными болями с конфликтами имен и т. д. (Поскольку реальные объекты и прокси называются одинаково.)

  2. Забудьте о попытке передать "real" бизнес-объектов. Вместо этого просто создайте простые объекты DataTransfer, которые я буду сопоставлять с моими реальными бизнес-объектами вручную. Они все равно копируются в новые прокси-объекты wsdl.exe, но по крайней мере я не обманываю себя, думая, что веб-сервисы могут изначально обрабатывать объекты с бизнес-логикой в них.

Кстати-кто-нибудь знает, как сказать wsdl.exe, чтобы не делать копию объекта? Разве мы не должны просто сказать ему: "Эй, используй этот существующий тип прямо здесь. Не копируйте его!"

Во всяком случае, пока я вроде как остановился на #2, но мне любопытно, что вы все думаете. У меня есть чувство, что есть гораздо лучшие способы сделать это в целом, и я даже не могу быть полностью точным по всем пунктам, поэтому, пожалуйста, дайте мне знать, что вы испытали.

Update: я только что узнал, что VS 2008 имеет возможность повторно использовать существующие типы при добавлении "ссылки на службу", а не создавать совершенно новый идентичный тип в файле прокси. Сладкий.

.net   web-services   soap   wsdl    

431   4   08:42, 18th August, 2020


Автоматизация WSDL.exe в пользовательской сборке

У меня есть веб-приложение, написанное в C#, которое потребляет несколько внутренних веб-служб. У нас есть уровень разработки, уровень тестирования и производственный уровень. Кроме того, мы используем команду WSDL.exe для создания файла Proxies.cs для веб-служб данного уровня.

Когда мы готовы развернуть наш код в стеке от разработки до тестирования или от тестирования до производства, нам нужно выполнить команду WSDL.exe , чтобы указать соответствующую версию веб-служб.

Есть ли общепринятый способ автоматизировать это?

asp.net   build-process   wsdl    

473   2   03:58, 17th August, 2020


Автоматизация WSDL.exe в пользовательской сборке

У меня есть веб-приложение, написанное в C#, которое потребляет несколько внутренних веб-служб. У нас есть уровень разработки, уровень тестирования и производственный уровень. Кроме того, мы используем команду WSDL.exe для создания файла Proxies.cs для веб-служб данного уровня.

Когда мы готовы развернуть наш код в стеке от разработки до тестирования или от тестирования до производства, нам нужно выполнить команду WSDL.exe , чтобы указать соответствующую версию веб-служб.

Есть ли общепринятый способ автоматизировать это?

asp.net   build-process   wsdl    

472   2   23:09, 23rd August, 2020


Чем сгенерировать WSDL из PHP-кода?

Есть некоторое количество классов (в Zend, symfony и другие), которые так или иначе упрощают создание WSDL, но какие-то они мутные.
Хотелось бы генерировать WSDL в IDE, как делают все белые люди принято у дотнетчиков. По слухам старая Zend Studio умела это делать, новая — нет.
А чем генерируете вы?

PHP   SOAP   WSDL    

332   5   14:46, 5th August, 2020


Чем сгенерировать WSDL из PHP-кода?

Есть некоторое количество классов (в Zend, symfony и другие), которые так или иначе упрощают создание WSDL, но какие-то они мутные.
Хотелось бы генерировать WSDL в IDE, как делают все белые люди принято у дотнетчиков. По слухам старая Zend Studio умела это делать, новая — нет.
А чем генерируете вы?

PHP   SOAP   WSDL    

443   5   05:51, 5th August, 2020


Как при помощи Zend_Soap_Client выполнить запрос при известной WSDL-схеме?

Имеется объект Zend_Soap_Client. Подключаюсь и выполняю запрос так:



$client = new Zend_Soap_Client($uri,<br>
        array(<br>
            'login' => $login,<br>
            'password' => $password,<br>
            'soapVersion' => SOAP_1_1)<br>
        );<br><br>
/*<br>
 * GetIdentityInfo<br>
 *<br>
 */<br><br>
$params = array('Profile' => $profile);<br>
$result = $client->GetIdentityInfo($params);<br>
print($result->GetIdentityInfoResult->any);<br>
print($client->getLastRequest());<br><br>
/*<br>
 * SubmitXml<br>
 * <br>
 */<br><br>
$request = simplexml_load_file('./request.xml');<br>
$filter = simplexml_load_file('./filter.xml');<br><br>
$request = xml2array($request);<br>
$filter = xml2array($filter);<br><br>
$params = array(<br>
    'Profile' => $profile,<br>
    'Request' => $request,<br>
    'Filter' => $filter);<br><br>
$result1 = $client->SubmitXml($params);<br><br>
   function xml2array($xml) {<br>
      $arXML=array();<br>
      $arXML['name']=trim($xml->getName());<br>
      $arXML['value']=trim((string)$xml);<br>
      $t=array();<br>
      foreach($xml->attributes() as $name => $value) $t[$name]=trim($value);<br>
      $arXML['attr']=$t;<br>
      $t=array();<br>
      foreach($xml->children() as $name => $xmlchild) $t[$name]=xml2array($xmlchild);<br>
      $arXML['children']=$t;<br>
      return($arXML);<br>
   }<br><br>




где $request, $filter — XML-данные (сначала как объект, затем преобразуется в массив).



Имеется WSDL-схема. Существенный кусок привожу ниже:



<s:element name="SubmitXml"><br>
<s:complexType><br>
<s:sequence><br>
<s:element maxOccurs="1" minOccurs="0" name="Profile" type="s:string"/><br>
<s:element maxOccurs="1" minOccurs="0" name="Request"><br>
<s:complexType><br>
<s:sequence><br>
<s:any/><br>
</s:sequence><br>
</s:complexType><br>
</s:element><br>
<s:element maxOccurs="1" minOccurs="0" name="Filter"><br>
<s:complexType><br>
<s:sequence><br>
<s:any/><br>
</s:sequence><br>
</s:complexType><br>
</s:element><br>
</s:sequence><br>
</s:complexType><br>
</s:element>




В первом запросе GetIdentityInfo параметр Profile проходит отлично, получаю нормальный ответ.



Во втором запросе SubmitXml параметр Profile также кушает нормально, ибо это type=«s:string». Ругается на Request и Filter ибо это XML в виде массива (или объекта?).



Отвечает:



PHP Fatal error: SOAP-ERROR: Encoding: object hasn't 'any' property in /usr/share/php/libzend-framework-php/Zend/Soap/Client.php on line 1113<br/>
PHP Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'any' property in /usr/share/php/libzend-framework-php/Zend/Soap/Client.php:1113




Вопрос: как быть с параметрами Request и Filter? Как мне их корректно передать? Если объект, то в каком виде?

Я вот вижу этот «any» и близок к разгадке…

В каком виде отдать параметр, соответствующий этому описанию?



<s:complexType><br>
<s:sequence><br>
<s:any/><br>
</s:sequence><br>
</s:complexType>

Zend   Framework   SOAP   WSDL    

334   2   00:41, 18th August, 2020