如何通过PHP调用SOAP方法?

时间:2014-11-25 08:32:12

标签: php soap

这是我的var_dump函数的结果:

echo "<pre>"; var_dump($client->__getFunctions()); echo "</pre>";
array(10) {
  [0]=>
  string(34) "Read_Result Read(Read $parameters)"
  [1]=>
  string(55) "ReadByRecId_Result ReadByRecId(ReadByRecId $parameters)"
  [2]=>
  string(58) "ReadMultiple_Result ReadMultiple(ReadMultiple $parameters)"
  [3]=>
  string(49) "IsUpdated_Result IsUpdated(IsUpdated $parameters)"
  [4]=>
  string(67) "GetRecIdFromKey_Result GetRecIdFromKey(GetRecIdFromKey $parameters)"
  [5]=>
  string(40) "Create_Result Create(Create $parameters)"
  [6]=>
  string(64) "CreateMultiple_Result CreateMultiple(CreateMultiple $parameters)"
  [7]=>
  string(40) "Update_Result Update(Update $parameters)"
  [8]=>
  string(64) "UpdateMultiple_Result UpdateMultiple(UpdateMultiple $parameters)"
  [9]=>
  string(40) "Delete_Result Delete(Delete $parameters)"
}

我试着调用read方法,如下所示:

$client->__soapCall("Read" ,  array('No'=>'142JC242')); 

其实我不明白&#34; Read_Result&#34; 是什么?和读取(读取$参数)?我该如何使用它们? THX

现在我得到了这个:致命错误:未捕获的SoapFault异常:[HTTP]未经授权...

2 个答案:

答案 0 :(得分:0)

你有方法:

  • ReadByRecId
  • ReadMultiple
  • IsUpdated
  • GetRecIdFromKey
  • 创建
  • CreateMultiple
  • 更新
  • UpdateMultiple
  • 删除

每个方法都接受$parameters并返回METHODNAME_Result值。而已。要调用方法,您可以尝试像:

$client->__soapCall("ReadMultiple", array());

此时我们不知道方法所期望的参数。你从哪里得到这个端点?有没有文件?

答案 1 :(得分:0)

如果您想了解WSDL文件,我建议您花一些时间熟悉XML Schema。您可以从<definitions>标记看到这是一个WSDL 1文件:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" ... >

可以在此处获取WSDL 1.2规范:

http://www.w3.org/TR/2003/WD-wsdl12-20030303/

实例化SoapClient时,可以在WSDL或非WSDL模式下使用它。在这种情况下,由于您有WSDL文件,因此可以在WSDL模式下使用它。

WSDL文件提供了服务提供的方法的规范。您可以直接将函数名称作为SoapClient的方法调用,例如:

$client->Read($params);

将调用Read操作。

如果你看一下WSDL的这一部分:

    <operation name="Read">
        <input name="Read" message="tns:Read"/>
        <output name="Read_Result" message="tns:Read_Result"/>
    </operation>

您将看到Read操作需要Read定义的传入参数,并将返回Read_Result定义的响应。

我的回答并不是全面的,但我希望你有足够的信息来开展。