gpt4 book ai didi

php - Symfony2 使用 besimple/soap-client 包使用 SOAP 服务

转载 作者:行者123 更新时间:2023-12-04 16:48:04 28 4
gpt4 key购买 nike

嘿,这一个可能很长......

我在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com