如何在Symfony控制器中创建SOAP Web服务ob娱乐下载
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何在Symfony控制器中创建SOAP Web服务ob娱乐下载
有几个工具可以帮助设置充当SOAP服务器的控制器。这些工具希望你有PHP SOAP安装扩展。由于PHP SOAP扩展目前不能生成WSDL,您必须从头创建一个WSDL,或者使用第三方生成器。
SOAP通过将PHP对象的方法暴露给外部实体(即使用SOAP服务的人)来工作。首先,创建一个类-HelloService
——它表示您将在SOAP服务中公开的功能。在这种情况下,SOAP服务将允许客户机调用已调用的方法你好
,它正好发送了一封电子邮件:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/ / src /服务/ HelloService.php名称空间应用程序\服务;类HelloService{私人$梅勒;公共函数__construct(\ Swift_Mailer$梅勒){$这->梅勒=$梅勒;}公共函数你好($的名字){$消息=新\ Swift_Message (“你好服务”)->该太空站(“me@example.com”)->setBody ($的名字.“你好!”);$这->梅勒->发送($消息);返回“你好,”.$的名字;}}
接下来,确保新类已注册为服务。如果你在用默认服务配置你什么都不需要做!
最后,下面是一个能够处理SOAP请求的控制器示例。因为index ()
可通过/ soap
, WSDL文档可以通过/肥皂吗?wsdl
:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/ / src /控制器/ HelloServiceController.php名称空间应用程序\控制器;使用应用程序\服务\HelloService;使用ob娱乐下载\包\FrameworkBundle\控制器\AbstractController;使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\路由\注释\路线;类HelloServiceController扩展AbstractController{/ * * *@Route(“/ soap”)* /公共函数指数(HelloService$helloService){$soapServer=新\ SoapServer (“/道路/ / hello.wsdl”);$soapServer->setObject ($helloService);$响应=新反应();$响应->头->集(“内容类型”,text / xml;charset = iso - 8859 - 1 ');ob_start ();$soapServer->处理();$响应->setContent (ob_get_clean ());返回$响应;}}
注意对的调用ob_start ()
而且ob_get_clean ()
.这些方法控制输出缓冲这允许您“捕获”的回显输出服务器- >处理()
.这是必要的,因为Symfony期望您的控制器返回一个ob娱乐下载响应
对象,将输出作为其“内容”。您还必须记得设置“内容类型”
头来“text / xml”
,因为这是客户所期望的。所以,你用ob_start ()
开始缓冲STDOUT并使用ob_get_clean ()
将回显输出转储到响应的内容中,并清除输出缓冲区。最后,您准备返回响应
.
下面是一个调用服务的示例NuSOAP客户端。这个例子假设index ()
方法可以通过路由访问/ soap
:
1 2 3
$soapClient=新\ SoapClient (“http://example.com/index.php/soap?wsdl”);$结果=$soapClient->调用(“你好”, (“名字”= >“斯科特。”]);
下面是一个WSDL示例。
12 34 56 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
<?xml version="1.0" encoding="ISO-8859-1"?><定义xmlns: SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”xmlns: xsd=“http://www.w3.org/2001/XMLSchema”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns: SOAP-ENC=“http://schemas.xmlsoap.org/soap/encoding/”tns:=“urn: helloservicewsdl”xmlns:肥皂=“http://schemas.xmlsoap.org/wsdl/soap/”xmlns: wsdl=“http://schemas.xmlsoap.org/wsdl/”xmlns=“http://schemas.xmlsoap.org/wsdl/”targetNamespace=“urn: helloservicewsdl”><类型><xsd:模式targetNamespace=“urn: hellowsdl”><xsd:进口名称空间=“http://schemas.xmlsoap.org/soap/encoding/”/><xsd:进口名称空间=“http://schemas.xmlsoap.org/wsdl/”/>xsd:模式>类型><消息的名字=“helloRequest”><部分的名字=“名称”类型=" xsd: string "/>消息><消息的名字=“helloResponse”><部分的名字=“回归”类型=" xsd: string "/>消息><portType的名字=“hellowsdlPortType”><操作的名字=“你好”><欧宝官网下载app>你好世界欧宝官网下载app><输入消息=“tns: helloRequest”/><输出消息=“tns: helloResponse”/>操作>portType><绑定的名字=“hellowsdlBinding”类型=“tns: hellowsdlPortType”><soap:绑定风格=“rpc”运输=“http://schemas.xmlsoap.org/soap/http”/><操作的名字=“你好”><soap: operationsoapAction=“urn: arnleadservicewsdl #你好”风格=“rpc”/><输入><soap:身体使用=“编码”名称空间=“urn: hellowsdl”encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”/>输入><输出><soap:身体使用=“编码”名称空间=“urn: hellowsdl”encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”/>输出>操作>绑定><服务的名字=“hellowsdl”><港口的名字=“hellowsdlPort”绑定=“tns: hellowsdlBinding”><soap:地址位置=“http://example.com/index.php/soap”/>港口>服务>定义>
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。