嘿,这一个可能很长......
我在 Symfony2 框架中有一个书面的 API,我现在正尝试使用我的 API 使用 SOAP 服务,这是我以前从未这样做过的,所以我继续谷歌查看是否有用于 Symfony2 的 SOAP 包并发现了这个: SOAP Bundle .
实际的 SOAP wsdl:http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
所以对于这个包,我有以下设置:
参数.yml
soap_options:
option1: something
option2: somethingElse
wsdl: wsdl/Weather.wsdl
在我的 src 目录中,我有一个 Soap 目录,其中包含 SoapClientWrapper.php 和子目录 wsdl:
SoapClientWrapper.php:
<?php
namespace Book\BookBundle\Soap;
use BeSimple\SoapClient\SoapClient;
class SoapClientWrapper extends SoapClient
{
public function __construct(array $options)
{
$wsdl = dirname(__FILE__) . '/' .$options['wsdl'];
parent::__construct($wsdl, $options);
}
}
在 wsdl 目录中,我有一个包含所有 xml 的 Weather.wsdl 文件。
我已经将我的 SOAP 创建为服务,如下所示:
<!-- Soap Client -->
<service id="book.bookbundle.soap.wrapper"
class="Book\BookBundle\Soap\SoapClientWrapper">
<argument key="soap_options">%soap_options%</argument>
</service>
然后我将它注入(inject)到我的一个 php 文件中,如下所示:
<?php
namespace Book\BookBundle\Dto\Template;
use Book\BookBundle\Soap\SoapClientWrapper;
/**
* @var SoapClientWrapper
*/
private $soap;
/**
* @param SoapClientWrapper $soapClientWrapper
*/
public function __construct(
SoapClientWrapper $soapClientWrapper
) {
$this->soap = $soapClientWrapper;
}
public function soapGreatFunNOT()
{
}
所以我期望在我的 soapGreatFunNOT 函数中发生的事情是调用我的 soap 服务 $this->soap 传递该服务所需的所有参数。但这是我迷路的地方,不能这样做......?我可能在这里遗漏了某些东西或不理解某些东西......
我用连接到它的 SoapUI 测试了这个 webService,它传递了成功交互所需的所有参数并得到了响应,但这很容易,在 symfony 中我迷路了......?
最佳答案
有时您不需要 bundle 来实现某些功能。我遇到了一些 SOAP 包的问题,并找到了以下 PHP 类:
http://php.net/manual/es/class.soapclient.php
您可以直接使用它来消费 SOAP 服务:
$client = new \SoapClient('http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL');
// useful information about the service
dump($client->__getFunctions());
dump($client->__getTypes());
// function call without parameters
dump($client->getWeatherInformation());
// function call with parameters
dump($client->getCityWeatherByZIP(array('ZIP' => 75220)));
希望这对您有所帮助!
关于php - Symfony2 使用 besimple/soap-client 包使用 SOAP 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204500/