如何使用SOAP在这个PHP程序中传递WSDL函数

时间:2013-07-19 16:41:01

标签: php xml soap wsdl

据我所知,我需要将函数的参数作为数组的索引传递。我也明白参数的值是数组索引的对应值。但我不能让我的功能发挥作用。我将变量传递给WSDL中的函数,但我没有得到任何东西。

这是我的PHP代码:

try{
    $soap_client = new SoapClient("https://foo.example.com:8443/current/bar?wsdl");
    $log_in = array(
        "iwsUsername"    => "username", 
        "iwsSecretKey"   => "secretKey",
        "caller"         => "JohnDoe", 
        "callerPassword" => "password"
    );
    //passing values into the function parameters above
    $request = $soap_client->authenticatedPing($log_in);
    echo $request->authenticatedPing;
} catch(SoapFault $exception){
    echo '?????';
}

出于安全考虑,这些显然是假值,但你明白了。

以下是此函数的WSDL:

 <wsdl:operation name="authenticatedPing">
   <soap12:operation soapAction="" style="rpc"/>
   <wsdl:input name="authenticatedPing">
     <soap12:body namespace="http://www.example.com" use="literal"/>
   </wsdl:input>
   <wsdl:output name="authenticatedPingResponse">
     <soap12:body namespace="http://www.example.com" use="literal"/>
   </wsdl:output>

我做错了什么?

2 个答案:

答案 0 :(得分:0)

以下只是一些评论 - 而不是答案 - 区分你在问题中得出的结论(所以这只是指出一些弱点,我知道我们没有Stackoverflow上有一个很好的SOAP,但我们至少以某种方式覆盖了它

  

据我所知,我需要将函数的参数作为数组的索引传递。

不,实际情况并非如此。在数组旁边,您还可以解析对象甚至元对象。数组表示法仅用于缩短其中一些,并且它遵循模糊规则 没有真正清楚记录

举个例子:请为您的数组语句提供参考。提供一个链接,其中记录了何时,如何以及为什么以您的方式创建数组。

  

我也理解参数的值是数组索引的对应值。

同样,即使这个陈述也没有过分错误,你没有概述为什么在这种情况下并遵循哪些规则。

  

我将变量传递给WSDL中的函数,但我没有得到任何东西。

你得到的东西。找出更准确的内容。例如,什么是异常消息。

答案 1 :(得分:0)

非WSDL表单有效。感谢您的评论

$client = new SoapClient(
    null,
    array(
        'location' => "https://************.com:*******/*****-=/iws",
        'soap_version' => SOAP_1_2,
        'uri' =>'http://www.*******.com',
        'style' => SOAP_RPC,
        'use' => SOAP_LITERAL
    )
);