1

我正在尝试调用 API。我需要的 XML 如下。

<SOAP-ENV:Envelope xmlns:ns1="http://www.webserviceX.NET/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ns1:ConversionRate/>
    <param1>
        <MessageTitle>Some Title</MessageTitle>
        <Images>
            <Image>http://3.bp.blogspot.com/-gzGWCfqJr_k/T-B7L0wlwSI/AAAAAAAADkw/C7sznAKVktc/s1600/rose_flower_screensaver-234027-1240456558.jpeg</Image>
            <Image>http://img.ehowcdn.com/article-new-thumbnail/ehow/images/a07/tv/vu/object-property-names-array-php-800x800.jpg</Image>
        </Images>
    </param1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我想在标签中传递多个图像。但我只能通过一项。在 php 中,多维数组不支持相同的键。我的php代码

 $client = new    SoapClient('http://www.webservicex.com/CurrencyConvertor.asmx?wsdl',        array(  'trace'      => true, 'exceptions' => true,'soap_version' => SOAP_1_1 ) );
    try {

        $data_params = new stdClass();
        $imgs = new stdClass();

        $img1 = 'http://3.bp.blogspot.com/-gzGWCfqJr_k/T-B7L0wlwSI/AAAAAAAADkw/C7sznAKVktc/s1600/rose_flower_screensaver-234027-1240456558.jpeg';
        $img2 = 'http://img.ehowcdn.com/article-new-thumbnail/ehow/images/a07/tv/vu/object-property-names-array-php-800x800.jpg';

        $imgs->Image = $img1;

        $data_params->MessageTitle                =    'Some Title';
        $data_params->Images                     =       $imgs;        

        $params    =    array(    'Id' => '187',
                    'Data'=>$data_params);

        $result = $client->__soapCall('ConversionRate',$params);
        echo $client->__getLastRequest();
    }catch(SoapFault $exception)
    {
            var_dump($exception);
            echo $client->__getLastRequest();
    }
4

2 回答 2

0

您一定很困惑,有问题的 CurrencyConvertor webservice ConversionRate 方法工作得很好,没有任何重复的参数名称,只有重复的类型,但这些是字符串 - 而不是图像 URL。

这是工作代码的输出(从 EUR 到 USD 的转换率):

class stdClass#2 (1) {
  public $ConversionRateResult =>
  double(1.3488)
}

这是工作代码:

<?php
/**
 * Multiple Nodes with same Name in SOAP Call
 * @link http://stackoverflow.com/q/19727338/367456
 */

$wsdl    = 'http://www.webservicex.com/CurrencyConvertor.asmx?wsdl';
$options = array(
    'trace'        => true,
    'exceptions'   => true,
    'soap_version' => SOAP_1_1,
);

$client = new SoapClient($wsdl, $options);

$params = array(
    'FromCurrency' => 'EUR',
    'ToCurrency'   => 'USD',
);

var_dump(
    $client->ConversionRate($params)
);
于 2013-11-02T18:10:15.583 回答
0

尝试一些事情,比如

   <Images>
    <Image>
    <item>your Image<item>
    </Image>
    <Image>
    <item>your 2nd Image<item>
    </Image>
    </Images>
于 2013-11-01T14:45:11.687 回答