0

我知道我需要将函数的参数作为数组的索引传递。我也明白参数的值是数组索引的对应值。但我无法让我的功能发挥作用。我将变量传递给 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>

我究竟做错了什么?

4

2 回答 2

0

以下只是一些评论 - 不是答案 - 以区分您在问题中得出的结论,因此(所以这只是指出一些弱点并没有完全帮助,我知道我们没有很好地涵盖这个问题的 SOAP在 Stackoverflow 上,但我们至少以某种方式涵盖了它)

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

不,事实并非如此。在数组旁边,您还可以解析对象甚至元对象。数组表示法只是为了缩短其中的一些,它遵循一些模糊的规则,这些规则并没有真正清楚地记录在案

举个例子:请为您的数组语句提供参考。提供一个链接,其中记录了必须按照您的方式创建阵列的时间、方式和原因。

我也明白参数的值是数组索引的对应值。

同样,即使这个陈述也没有太大的错误,您没有概述在这种情况下的原因以及遵循哪些规则。

我将变量传递给 WSDL 中的函数,但我什么也没得到。

你得到一些东西。了解更多究竟是什么。例如什么是异常消息。

于 2013-07-21T09:36:55.977 回答
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
    )
);
于 2013-08-28T17:16:29.403 回答