Я намерен реализовать веб-сервис с использованием PHP. Создатели веб-сервиса отправили мне WSDL, необходимые по электронной почте, и я смог импортировать их в пользовательский интерфейс Soap и протестировать их.Определения и реализации SOAP UI в PHP
Учитывая, что они работают очень хорошо, мне поручено повторить тот же процесс в моем приложении PHP. Я немного поработал над поиском, чтобы узнать, что PHP5 уже предоставляет SoapClient для использования web-сервисов. Я даже проверил два примера, и они отлично работали. Но не тот, который работал с использованием мыльного интерфейса.
SoapClient получает URI файла WSDL в качестве первого параметра 1 - это URL-адрес службы, отображаемой soapui в верхней строке? Я заметил, что другие веб-службы, которые я тестировал, если uri был скопирован и вставлен в браузер, формат XML будет возвращен с данными о веб-сервисе. Поскольку данные soapui указывали как конечную точку, браузер просто вывел сообщение об ошибке «Lenght Required» 411.
Итак, мой вопрос в том, является ли .xml-файл, который SOAP ui использует для импорта проекта, который я должен указать в моем php? Как:
SoapClient ("file:://C:\users\something\webservice.xml?wsdl",
['service'=>'login', 'username'=>'something', 'password'=>'secret' ]);
Я подвергнет .xml я получил информацию о WebService, но я боюсь утечки конфиденциальных данных. Я скопирую заголовок запроса, ommiting конфиденциальных данные
<?xml version="1.0" encoding="UTF-8"?>
<con:soapui-project activeEnvironment="Default" name="" resourceRoot="" soapui-version="5.2.0" abortOnError="false" runType="SEQUENTIAL" id="" xmlns:con="..."><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="..." type="wsdl" bindingName="{...}GenericTicketConnector_Service" soapVersion="1_1" anonymous="optional" definition="file:/D:/.../Documents/file.wsdl" id="..." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:\D:\...\Documents\file.wsdl"><con:part><con:url>file:\D:\...\Documents\file.wsdl</con:url><con:content><![CDATA[<--!...-->
<wsdl:definitions name="GenericTicketConnector" targetNamespace="http://www.otrs.org/TicketConnector/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.otrs.org/TicketConnector/">
<wsdl:documentation/>
<!--Warning: This WSDL file is for Development and Test purposes ONLY!-->
<wsdl:types>
<xsd:schema targetNamespace="http://www.otrs.org/TicketConnector/">
После этого файл .xml выглядит как обычный файл WSDL, описывающее WebServices поставки, формат запрос, в откосе ... и т.д. ...
спасибо.
Я попытался изменить адрес, чтобы он назвал «файл мыла». Например: '$ client = new SoapClient (" file: /// C: /Users/nb21334/Desktop/OTRSTicketConnector-soapui-project.wsdl ", $ params);' - но я получил ошибку 'SOAP-ERROR: Разбор WSDL: Не удалось найти в 'файле: /// C:/Users (остальная часть пути к файлу) '- Я пробовал с расширениями .xml и .wsdl. –
Thaenor
Похоже, что файл WSDL является неполным. Обратитесь в OTRS и спросите их, что такое '' из Webservice и почему этот элемент отсутствует в файле WSDL. У них может быть причина для этого. В зависимости от того, что отсутствует, вы также можете предоставить данные через параметры. –
hakre
Я думаю, что не использую нужный файл. Либо мне нужно сгенерировать сам wsdl, либо что-то еще отсутствует. Есть ли способ, которым я могу вручную написать xml, который привязан к запросу и вручную отправил его на серверы? Ошибка, которую я получаю, происходит из-за того, что я не загружаю правильный wsdl в php. (на PHP запрос даже не отправляется, я знаю это, потому что я получаю точно такую же ошибку независимо от того, чтобы быть в сети или в автономном режиме) – Thaenor