cadoles / soap
构建和消费基于SOAP和WSDL的Web服务
Requires
- php: >=7.0
- ext-curl: *
- ext-soap: *
- ass/xmlsecurity: ~1.0
- symfony/framework-bundle: ~3.4|~4.0
- symfony/twig-bundle: ~3.4|~4.0
- zendframework/zend-mime: 2.1.*
Requires (Dev)
- mikey179/vfsstream: ~1.6.5
- phpunit/phpunit: ^5.7
- symfony/filesystem: ~2.3
- symfony/process: ~2.3
Replaces
- besimple/soap-bundle: 5.2.1
- besimple/soap-client: 5.2.1
- besimple/soap-common: 5.2.1
- besimple/soap-server: 5.2.1
- besimple/soap-wsdl: 5.2.1
- cocciagialla/soap: 5.2.1
- 5.2.1
- 5.2.0
- 5.1.0
- v4.4.7
- v4.4.6
- v4.4.5
- v4.4.4
- v4.4.3
- v4.4.2
- v4.4.1
- v4.4
- v4.3.3
- v4.3.2
- v4.3.1
- v4.3
- v4.2.8
- v4.2.7
- v4.2.6
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2
- v4.1.2
- v4.1.1
- v4.1
- v0.4
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.0
- dev-mse
- dev-essai_nettoyage_cache_avance
- dev-issue#1
- dev-php-cs-fixer
- dev-rollback-wsdl-format
This package is auto-updated.
Last update: 2024-09-08 20:30:50 UTC
README
此分支提供了BeSimpleSoap捆绑包,已更新为与Symfony 3.4和4.x兼容(以及与PHP 7.0-7.4兼容)。
我们为了成功维护我们的某些项目,从官方BeSimpleSoap仓库进行了分支。
我们现在已整合了子分支中的更改和修复(感谢大家!),现在应该是最新的了 :)
此分支由Cadoles的人维护。
贡献
我们欢迎拉取请求 :) 如果可能,请包括测试。
运行测试可以通过运行php vendor/bin/phpunit
来实现。
安装
如果您还没有composer,请按照Composer网站上的说明进行安装。
然后只需运行
$ composer require cadoles/soap
应该就足够了。
组件
BeSimpleSoap由五个组件组成...
BeSimpleSoapClient
重构 BeSimpleSoapClient是一个组件,它扩展了原生的PHP SoapClient,并增加了SwA和WS-Security等更多功能。
BeSimpleSoapServer
重构 BeSimpleSoapServer是一个组件,它扩展了原生的PHP SoapServer,并增加了SwA和WS-Security等更多功能。
BeSimpleSoapCommon
重构 BeSimpleSoapCommon组件包含服务器和客户端实现共享的功能。
BeSimpleSoapWsdl
未修改 该组件未受重构影响,应该可以正常工作。有关更多信息,请参阅原始的README。
BeSimpleSoapBundle
不支持的! BeSimpleSoapBundle是一个用于构建基于WSDL和SOAP的Web服务的Symfony2捆绑包。有关更多信息,请参阅原始的README。 由于删除了Symfony库,并且未重构其他组件的使用,因此它将无法工作。请随意分支此存储库并修复它!
如何使用
您可以通过研究tests
目录中的单元测试来获得一些提示。忘记关联数组、模糊配置、多个扩展和静默错误!这看起来可能有点复杂,但它将指导您正确配置和设置客户端或服务器。
SOAP客户端调用示例
$soapClientBuilder = new SoapClientBuilder(); $soapClient = $soapClientBuilder->build( SoapClientOptionsBuilder::createWithDefaults(), SoapOptionsBuilder::createWithDefaults('http://path/to/wsdlfile.wsdl') ); $myRequest = new MyRequest(); $myRequest->attribute = 'string value'; $soapResponse = $soapClient->soapCall('myMethod', [$myRequest]); var_dump($soapResponse); // Contains Response, Attachments
有什么问题吗?!
开启跟踪并捕获SoapFaultWithTracingData
异常以获得一些糖果 :)
try { $soapResponse = $soapClient->soapCall('myMethod', [$myRequest]); } catch (SoapFaultWithTracingData $fault) { var_dump($fault->getSoapResponseTracingData()->getLastRequest()); }
在此示例中,使用了MyRequest
对象来描述请求。使用类映射,您帮助SoapClient将其转换为XML请求。
SOAP服务器处理示例
启动SOAP服务器稍微复杂一些。我建议您检查SoapServer单元测试以获取灵感。
$dummyService = new DummyService(); $classMap = new ClassMap(); foreach ($dummyService->getClassMap() as $type => $className) { $classMap->add($type, $className); } $soapServerBuilder = new SoapServerBuilder(); $soapServerOptions = SoapServerOptionsBuilder::createWithDefaults($dummyService); $soapOptions = SoapOptionsBuilder::createWithClassMap($dummyService->getWsdlPath(), $classMap); $soapServer = $soapServerBuilder->build($soapServerOptions, $soapOptions); $request = $soapServer->createRequest( $dummyService->getEndpoint(), 'DummyService.dummyServiceMethod', 'text/xml;charset=UTF-8', '<received><soap><request><here /></request></soap></received>' ); $response = $soapServer->handleRequest($request); var_dump($response); // Contains Response, Attachments
在此示例中,使用了DummyService
服务来处理请求。使用服务可以帮助您创建一致的SoapServer端点。服务可以持有端点URL、WSDL路径和类映射作为关联数组。您可以直接在DummyService
中将类映射作为ClassMap
对象持有,而不是数组。
在服务中,您应该描述从给定的WSDL中获取的SOAP方法。在示例中,调用了dummyServiceMethod。该方法将接收请求对象并根据类映射返回相应的响应对象。
查看dummyServiceMethod
的简化实现以获得线索
/** * @param DummyServiceRequest $dummyServiceRequest * @return DummyServiceResponse */ public function dummyServiceMethod(DummyServiceRequest $dummyServiceRequest) { $response = new DummyServiceResponse(); $response->status = true; return $response; }
有关更多信息以及获取实现灵感的示例,请参阅tests
目录中的单元测试。