如何使用PHP SoapClient发送此XML?

我正在尝试使用PHP Soap Client在下面发送XML请求,但是服务器响应时显示错误Error fetching http headers。我猜主要问题来自如何正确解释entry下的 transactionProperties元素

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ext="http://xxx.xxx.xxx.xxx.com/">
   <soapenv:Header/>
   <soapenv:Body>
        <ext:requestPurchase>
            <context>
                <channel>xxx</channel>
                <prepareonly>xxxx</prepareonly>
                <clientReference>12q31a1a456677881</clientReference>
                <clientRequestTimeout>500</clientRequestTimeout>
                <initiatorPrincipalId>
                <id>xxxx</id>
                <type>xxxx</type>
                <userId>xxxx</userId>
                </initiatorPrincipalId>
                <password>xxxxx</password>
                <transactionProperties>
                <entry>
                    <key>preferredLanguage</key>
                    <value>en</value>
                </entry>
                <entry>
                    <key>productSKU</key>
                    <value>xxx</value>
                </entry>
                <entry>
                    <key>currency</key>
                    <value>NGN</value>
                </entry>
                <entry>
                    <key>purchaseAmount</key>
                    <value>3</value>
                </entry>
                </transactionProperties>
            </context>
            <purchaseOrder>
                <productSpecifier>
                <productId>xx</productId>
                <productIdType>xxx</productIdType>
                </productSpecifier>
                <purchaseCount>5</purchaseCount>
            </purchaseOrder>
        </ext:requestPurchase>
   </soapenv:Body>
</soapenv:Envelope>

这是我的代码:

<?php
// Setup Host,WSDL location,Soap Client options
$uri = "http://xx.xxx.xx.x.com/";
$wsdl = "http://host-ip/xxx/service?wsdl"; 
$soapclientOptions = array();
$soapclientOptions['trace'] = TRUE;
$soapclientOptions['exceptions'] = 1;
$soapclientOptions['use'] = 'SOAP_LITERAL';
$soapclientOptions['uri'] = $uri;
$soapclientOptions['connection_timeout']  = 15;
$soapclientOptions['cache_wsdl'] = WSDL_CACHE_NONE;

$e = '';
try 
{
    $client = new SoapClient($wsdl,$soapclientOptions);
}
catch(Exception $e)  
{
    die('Error occured on attempt to open Soap Connection. Check log for error details');
}

try
{
    $payload = array(
        "context"=>array("channel"=>"xxx","prepareonly"=>xxx,"clientReference"=>"12q31a1a456677881","clientRequestTimeout"=>"500","initiatorPrincipalId"=>array("id"=>"xxx","type"=>"xxx","userId"=>"xxx"),"password"=>"xxxx","transactionProperties"=>array( 
                array("key"=>"preferredLanguage","value"=>"en"),array("key"=>"productSKU","value"=>"VOS"),array("key"=>"currency","value"=>"NGN"),array("key"=>"purchaseAmount","value"=>"3")
                )
        ),"purchaseOrder"=>array("productSpecifier"=>array("productId"=>"xxx","productIdType"=>"xxx"),"purchaseCount"=>"5")
    );
    $result = $client->requestPurchase($payload);
}
catch (Exception $e)
{
    die('Error occured on attempt to process Soap Connection. Check log for error details');
}
lzq0809 回答:如何使用PHP SoapClient发送此XML?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3076231.html

大家都在问