如何在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一起使用。计算肥皂而且NuSOAP这是两个例子。尽管在这些示例中使用了PHP SOAP扩展,但总体思想仍然适用于其他实现。

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”)* /公共函数指数(HelloServicehelloServicesoapServer\ 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许可证。