首页 > 解决方案 > 我需要在 PHP 中使用哪种 SOAP 编码才不会丢失我的 xsi:type-attribute?

问题描述

我一直在努力在 PHP 中设置 SoapVal 对象的正确编码。

我需要一个带有 nodeName = "OrderItem" 并且 xsi:type 设置为 "TicketOrderItem" 的 SoapVal,但是当我使用以下代码段时:

$orderItemList->append(
    new \SoapVar(
        $orderItem,
        SOAP_ENC_OBJECT,
        'TicketOrderItem',
        $salesChannelNamespace,
        'OrderItem',
        $salesChannelNamespace));

我得到以下结果:

意外

预期结果将是:

预期的

orderItem 对象如下:

stdClass Object
(
    [ProductId] => abcd
    [UnitPrice] => stdClass Object
        (
            [Amount] => 24.50
            [CurrencyCode] => EUR
        )

    [Quantity] => 1
    [ValidFrom] => 2021-06-01T09:00:00 02:00
    [ConsumerCategoryId] => efgh
    [IsDepotTicket] => 
)

我尝试了编码类型,但它们似乎都没有提供所需的结果。

这是我使用的 SoapClient 选项:

    $options = array(
        'soap_version' => SOAP_1_1,
        'encoding' => 'utf-8',
        'trace' => true,
        'exceptions' => false,
        'cache_wsdl' => WSDL_CACHE_BOTH
    );

我们使用的是 PHP 7.4.19 版本,来自 php_info() 的肥皂设置如下: php_info

希望有人可以在这里帮助我。

标签: phpsoapsoap-client

解决方案


推荐阅读