用于PHP Soap应用程序的cURL vs__SoapClient
我经常遇到PHP内置SOAP客户端的问题,无论输入参数如何,它都会返回相同的错误响应 使用内置在PHP中的SOAP库有好处还是通过GET直接通过cURL查询有缺点?用于PHP Soap应用程序的cURL vs__SoapClient,php,soap,soap-client,Php,Soap,Soap Client,我经常遇到PHP内置SOAP客户端的问题,无论输入参数如何,它都会返回相同的错误响应 使用内置在PHP中的SOAP库有好处还是通过GET直接通过cURL查询有缺点? $client = new SoapClient("http://example.com/wdsl"); $params = array( 'Username' => 'username', 'Password' => 'pass', 'EventNam
$client = new SoapClient("http://example.com/wdsl");
$params = array(
'Username' => 'username',
'Password' => 'pass',
'EventName' => 'Test Event',
'EventDate' => '2011-06-15T13:45:30',
'Destination' => '447987654321',
'Carrier' => '1',
'PhoneType' => '13',
'Originator' => 'ukflive',
'MessageText' => 'Test',
'LogoURL' => 'http://example.com/mail.gif',
'BookingReference' => '123456',
'Tickets' => '1',
'CollectionValidFrom' => '2011-06-15T13:45:30',
'CollectionValidTo' => '2011-06-15T18:45:30',
'TemplatePath' => '',
'PostBack' => 'http://example.com/'
);
$response = $client->__soapCall("SendManagedMobileTicket", $params);
print_r($response);
SoapClient是PHP5的一个集成的、积极维护的部分。cURL是发送HTTP数据的快速而肮脏的方式。明智的长期决策是坚持使用SoapClient及其方法
您可能还需要查看响应标题,如_soapCall()文档页面的“注释”部分所示:您是说您需要更多描述性的错误响应,还是说您根本没有让它工作?你得到了什么错误?嗯,cURL做事情并不快-快速的方法是
file\u get\u contents()
,这真的很肮脏。cURL的优点是尊重SSL的安全默认设置,但您是正确的:使用cURL执行Soap或任何其他未在内部实现WSDL/XML解析的操作都很麻烦。PHP-Soap客户端非常不灵活,很难用于任何执行深奥操作的用例。例如,如果您需要将使用多个XML名称空间的文档包装在SOAP信封中,那么您无法控制名称空间别名(它将是ns1、ns2、ns3…)。SOAP-PHP类映射也不能很好地工作。有时候,您最好只构建自己的XML,使用cURL进行实际调用,自己处理错误案例。