【问题标题】:cURL vs __SoapClient for PHP Soap Application用于 PHP Soap 应用程序的 cURL 与 __SoapClient
【发布时间】:2011-04-26 15:19:58
【问题描述】:

我在使用 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);

【问题讨论】:

  • 您是说您想要更多描述性的错误回复,还是您根本没有让它工作?你遇到了什么错误?

标签: php soap soap-client


【解决方案1】:

SoapClient 是 PHP5 的一个集成的、积极维护的部分。 cURL 是发送 HTTP 数据的快速而肮脏的方式。明智的长期决定是坚持使用 SoapClient 及其方法。

您可能还想查看响应标头,如 __soapCall() 文档页面的注释部分所示:http://www.php.net/manual/en/soapclient.soapcall.php#102387

【讨论】:

  • 嗯,cURL 做事并不快——快速的方法是file_get_contents(),这真的很脏。 cURL 的好处是尊重 SSL 的安全默认设置,但您是对的:使用 cURL 或其他没有在内部实现 WSDL/XML 解析的东西做 Soap 很麻烦。
  • PHP SOAP 客户端非常不灵活,难以用于任何做一些深奥的用例。例如,如果您需要将使用多个 XML 命名空间的文档包装在 SOAP 信封中,则您无法控制命名空间别名(它将是 ns1、ns2、ns3...)。 SOAP - PHP 类映射也不能正常工作。有时您最好构建自己的 XML 并使用 cURL 进行实际调用并自己处理错误情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2011-12-11
  • 2014-10-28
相关资源
最近更新 更多