如何为asmx Web服务编写Nusoap客户端脚本?

时间:2009-12-04 21:31:49

标签: php web-services asmx nusoap

我需要一个基于nusoap lib的php客户端。在启用haeder auth的情况下获取asmx服务响应:

这是请求(使用soapUI):

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:res="namespaceurl"> <soap:Header> <res:AuthHeader> <!--Optional:--> <res:UserName>myuser</res:UserName> <!--Optional:--> <res:Password>mypass</res:Password> </res:AuthHeader> </soap:Header> <soap:Body> <res:LoanStatus> <res:iAccountNbr>?</res:iAccountNbr> <res:iResortNbr>?</res:iResortNbr> <!--Optional:--> <res:strXRef></res:strXRef> </res:LoanStatus> </soap:Body> </soap:Envelope>

这里是响应(soapUI):<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:res="namespaceurl"> <soap:Header> <res:AuthHeader> <!--Optional:--> <res:UserName>myuser</res:UserName> <!--Optional:--> <res:Password>mypass</res:Password> </res:AuthHeader> </soap:Header> <soap:Body> <res:LoanStatus> <res:iAccountNbr>?</res:iAccountNbr> <res:iResortNbr>?</res:iResortNbr> <!--Optional:--> <res:strXRef></res:strXRef> </res:LoanStatus> </soap:Body> </soap:Envelope>

2 个答案:

答案 0 :(得分:0)

如果确实需要使用NuSoap(我建议使用PHP原生的Soap扩展!),请查看Introduction to NuSoap中的客户端示例:

<?php
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the client instance
$client = new soapclient('http://localhost/phphack/helloworld.php');
// Call the SOAP method
$result = $client->call('hello', array('name' => 'Scott'));
// Display the result
print_r($result);
?>

从那里它应该是直截了当的。

答案 1 :(得分:0)

如果您在对预定义的.NET Web服务进行SOAP调用时遇到问题,可以使用nusoap发送原始XML。

查看this post了解详情。

但是尝试解析WSDL文件会更好。尝试使用wsdl2php。它非常适合解析WSDL文件。它将数据类型结构从WSDL文件复制到php类库。

您可以找到有关如何使用它的说明here