PHP soap 结果状态正常,但没有任何项目。 SOAPUI 也提供状态 ok 和 items

PHP soap result status OK but there is no any items. SOAPUI gives status ok and items too

你能帮帮我吗-? 当我 运行 PHP 中的 SOAP 请求时,我获得了成功的结果,但结果中没有任何项目。 像下面这样...

<?php


    $wsdl='https://api.n11.com/ws/SapCommissionEInvoiceDetailService.wsdl';
    $soap = new SoapClient($wsdl);
    $searchData = array(
                    "auth" => array( 
                                            "appKey" => '***********', 
                                            "appSecret" => '*******'),
                    "date" => '2020-06');

                                
    
    $result = $soap->GetSapCommissionEInvoiceDetail($searchData);
    
    
    // Echo the result
    echo "<pre>".print_r($result, true)."</pre>";

    ?>

当我通过 SOAPUI 运行 请求时,我得到了所有预期的项目。 像下面这样...

SOAPUI request and responce

你能告诉我我哪里错了吗?

当我在此 api 中调用其他方法时,我可以毫无问题地获取所有项目。但是在这个方法(GetSapCommissionEInvoiceDetail)中我遇到了一个大问题。请帮忙 - 我花了 7 天时间寻找解决方案。

更新

echo 的输出(结果)是:


stdClass 对象 ( [结果] => stdClass 对象 ( [状态] => 成功 )

[commissionInvoiceDetail] => stdClass Object
    (
        [commissionInvoiceDetailDataList] => stdClass Object
            (
            )

    )

)

UPDATE_2: 我添加了 2 行来捕获错误。

    echo "REQUEST:\n" . htmlentities($soap->__getLastRequest()) . "\n";
    echo "Response:\n" . htmlentities($soap->__getLastResponse()) . "\n";

__getLastReques的结果是:

REQUEST: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.n11.com/ws/schemas"><SOAP-ENV:Body><ns1:GetSapCommissionEInvoiceDetailRequest><auth><appKey>*************</appKey><appSecret>**************</appSecret></auth><date>2020-06</date></ns1:GetSapCommissionEInvoiceDetailRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>

getLastResponse 的结果是:

Response: <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns3:GetSapCommissionEInvoiceDetailResponse xmlns="" xmlns:ns3="http://www.n11.com/ws/schemas"><result><status>success</status></result><commissionInvoiceDetail><commissionInvoiceDetailDataList><commissionInvoiceItemDetailData><addOrder>0,00</addOrder><belnr>0400201769</belnr><malzemeKodu></malzemeKodu><miktar>1</miktar><orderItemId>208851060</orderItemId><orderNumber>205978544774</orderNumber><pazarlamaGeliri>0,00</pazarlamaGeliri><saticiId></saticiId><tamamlanmaTarihi>08.06.2020</tamamlanmaTarihi><transactionDDText>Satış Kargo (SPP)</transactionDDText><transactionType>SKS</transactionType><tutar>8,34</tutar><vadeFarki>0,00</vadeFarki></commissionInvoiceItemDetailData><commissionInvoiceItemDetailData><addOrder>0,00</addOrder><belnr>0400201769</belnr><malzemeKodu></malzemeKodu><miktar>1</miktar><orderItemId>208785323</orderItemId><orderNumber>205387444774</orderNumber>

所以 XML 的结果不是 NULL。这十分完美。但是echo的结果是:

stdClass Object

( [结果] => stdClass 对象 ( [状态] => 成功 )

[commissionInvoiceDetail] => stdClass Object
    (
        [commissionInvoiceDetailDataList] => stdClass Object
            (
            )

    )

)

回显结果为NULL。所以我在打印结果时犯了一些错误。求助 PLSSSSSS )))

我没有任何方法可以使用您尝试使用的 API 进行测试 - 但请尝试:

$soap = new SoapClient($wsdl, [
  'features' => SOAP_USE_XSI_ARRAY_TYPE,
  'exceptions' => true
]);
$soap->__setSoapHeaders([]);

可能是 PHP soap 客户端很难解释从 API 返回的 XML 数组的类型。如果不出意外,exceptions 键为真可能会提醒您注意其他问题。