gpt4 book ai didi

php - 来自本地 XML 的模拟 SoapClient 响应

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:48 25 4
gpt4 key购买 nike

我想用文件中的 XML 模拟\SoapClient 的响应。

如何在 SoapClient 从文件返回时创建一个 stdClass 对象。

客户端已经包装了 SoapClient,因此可以轻松模拟响应。

我的模拟是这样的:

$soapClient->expects($this->once())
->method('call')
->will(
$this->returnValue(
simplexml_load_string(
file_get_contents(__DIR__ . '/../../../Resources/file.xml')
)
)
);

但这会返回 SimpleXml 而不是 stdClass。

更新:
提议的 json_encode/json_decode hack 似乎不处理属性,因为 SoapClient 返回它们:

SOAP 客户端:

object(stdClass)[4571]
public 'Lang' => string 'de' (length=2)
public 'Success' => boolean true

破解:

  object(stdClass)#27 (3) {
["@attributes"]=>
object(stdClass)#30 (2) {
["Lang"]=>
string(2) "de"
["Success"]=>
string(4) "true"

最佳答案

正如 Alex Blex 所说,您必须模拟 __doRequest

查看 PHP 的源代码:

  1. https://github.com/php/php-src/blob/f2fd51cb802cec2175a7b92d69c3306615ca29a4/ext/soap/soap.c#L2676
  2. https://github.com/php/php-src/blob/38c337f22eff21ae4123ce1d4354154ee8c63983/ext/soap/php_packet_soap.c#L24

do_request 在您的 SoapClient 实例上调用“__doRequest”。然后将结果传递给 parse_packet_soap,后者随后解析 xml。

关于php - 来自本地 XML 的模拟 SoapClient 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36406763/

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