2011-04-26 129 views
2

我在PHP的内置SOAP客户端中出现了一个反复出现的问题,无论输入参数如何,它都返回相同的错误响应。cURL vs __SoapClient for PHP Soap应用程序

使用内置于PHP中的SOAP库还是不利于通过GET直接通过cURL查询是否有优势?

$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); 
+0

你是说你想更具体的错误reposnses,或者说你没有得到它在所有工作?你遇到了什么错误? – 2011-04-26 15:23:38

回答

3

SoapClient是PHP5集成的,主动维护的部分。 cURL是发送HTTP数据的快速和肮脏的方式。聪明的长期决定是坚持使用SoapClient及其方法。

您可能还需要寻找到响应报头,如图所示__soapCall()文档页面的注释部分:http://www.php.net/manual/en/soapclient.soapcall.php#102387

+0

那么,cURL并不完全在做快速 - 快速的方法是'file_get_contents()',这真的很脏。 cURL具有尊重SSL的安全默认设置的好处,但您是正确的:使用cURL或其他任何未在内部实现的WSDL/XML解析的Soap使用Soap很麻烦。 – Sven 2015-04-23 20:21:26

+1

PHP SOAP客户端非常不灵活,并且难以用于任何有深奥含义的用例。例如,如果您需要打包在SOAP信封中使用多个XML名称空间的文档,则无法控制名称空间别名(将为ns1,ns2,ns3 ...)。 SOAP - PHP类映射也无法正常工作。有时你可能会更好,只需构建自己的XML并使用cURL进行实际调用,然后自己处理错误案例。 – GordonM 2015-11-13 17:10:42