2011-04-26 127 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