я пытаюсь написать мыльный сервер (включая создание wsdl) с моим symfony 2.8 и php 5.6.
Я пытаюсь использовать natif \ soap_server () И библиотеку NuSoap. я уже тестирую soapClient с другим wsdl и все в порядке.
Я хочу написать свой собственный и конкретный? Wsdl.
У меня есть SoapController.php в моем AppBundle:
Это моя функция для записи файла wsdl. и его работа:
$class = "AppBundle\\Utils\\MySoapServer";
$serviceURI = "http://myurl.com/";
$wsdlGenerator = new \PHP2WSDL\PHPClass2WSDL($class, $serviceURI);
// Generate the WSDL from the class adding only the public methods that have @soap annotation.
$wsdlGenerator->generateWSDL(true);
// Dump as string
$wsdlXML = $wsdlGenerator->dump();
// Or save as file
$wsdlXML = $wsdlGenerator->save('assets/example.wsdl');
exit()
;
Выходные данные - это файл example.wsdl, подобный этому:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://myurl.com/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="AppBundle.Utils.MySoapServer" targetNamespace="http://myurl.com/soap/">
<types>
<xsd:schema targetNamespace="http://myurl.com/soap/">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
</xsd:schema>
</types>
<portType name="AppBundle.Utils.MySoapServerPort">
<operation name="getMessage">
<documentation>return message.</documentation>
<input message="tns:getMessageIn" />
<output message="tns:getMessageOut" />
</operation>
<operation name="addNumbers">
<documentation>Adds two numbers.</documentation>
<input message="tns:addNumbersIn" />
<output message="tns:addNumbersOut" />
</operation>
</portType>
<binding name="AppBundle.Utils.MySoapServerBinding" type="tns:AppBundle.Utils.MySoapServerPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="getMessage">
<soap:operation soapAction="http://myurl.com/soap/#getMessage" />
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://myurl.com/soap/" />
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://myurl.com/soap/" />
</output>
</operation>
<operation name="addNumbers">
<soap:operation soapAction="http://myurl.com/soap/#addNumbers" />
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://myurl.com/soap/" />
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://myurl.com/soap/" />
</output>
</operation>
</binding>
<service name="AppBundle.Utils.MySoapServerService">
<port name="AppBundle.Utils.MySoapServerPort" binding="tns:AppBundle.Utils.MySoapServerBinding">
<soap:address location="http://myurl.com/soap/" />
</port>
</service>
<message name="getMessageIn" />
<message name="getMessageOut">
<part name="return" type="xsd:string" />
</message>
<message name="addNumbersIn">
<part name="num1" type="xsd:anyType" />
<part name="num2" type="xsd:anyType" />
</message>
<message name="addNumbersOut">
<part name="return" type="xsd:float" />
</message>
</definitions>
для информации, моя маршрутизация "soap /" нацелена на SoapServerAction в моем SoapController;
soap:
path: /soap
defaults: { _controller: AppBundle:Soap:SoapServer }
Теперь я предполагаю, что попытайтесь использовать его с моим SoapClientAction в моем SoapController
$wsdlTest = "http://myurl.com/assets/example.wsdl";
// Config
$client = new \nusoap_client($wsdlTest, TRUE);
$w_Fdls = $client->call('getMessage');
var_dump($client->getProxyClassCode());
var_dump($w_Fdls);
С моим getProxyClassCode () я нахожу свой метод
см. возврат из моего дампа var getproxyclasscode ()
string (545) "класс nusoap_proxy_1255706341 расширяет nusoap_client {//
void function getMessage () {$ params = array (); вернуть
$ this-> call ('getMessage', $ params, 'http://testuri.com',
'http://myurl.com/#getMessage');} //
http://www.w3.org/2001/XMLSchema:anyType $ num1,
http://www.w3.org/2001/XMLSchema:anyType $ num2 функция
addNumbers ($ num1, $ num2) {$ params = array ('num1' => $ num1, 'num2' =>
$ Num2); вернуть $ this-> call ('addNumbers', $ params,
'http://testuri.com',' http://myurl.com/#addNumbers');}} "
но мои $client->call('getMessage')
верните мне
BOOL (ложь)
Спасибо всем, кто найдет проблему со мной.
Дайте мне знать, если вам нужна дополнительная информация