【问题标题】:Multiple Nodes with same Name in SOAP CallSOAP 调用中具有相同名称的多个节点
【发布时间】:2013-11-01 13:04:49
【问题描述】:

我正在尝试调用 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();
    }

【问题讨论】:

标签: php xml soap soap-client


【解决方案1】:

尝试一些类似的东西

   <Images>
    <Image>
    <item>your Image<item>
    </Image>
    <Image>
    <item>your 2nd Image<item>
    </Image>
    </Images>

【讨论】:

    【解决方案2】:

    你肯定搞错了什么,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)
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多