用于PHP Soap应用程序的cURL vs__SoapClient

用于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

我经常遇到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);

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进行实际调用,自己处理错误案例。