2011-04-26 6 views
2

입력 매개 변수에 관계없이 동일한 오류 응답을 반환하는 PHP의 내장 SOAP 클라이언트에 반복 문제가 있습니다.cURL 대 __SoapClient for PHP Soap Application

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를 원하는, 또는 당신이하지 않은 것을 말하고있다 :

또한 __soapCall() 문서 페이지의 노트 섹션에 같이 응답 헤더를 조사 할 수 있습니다 전혀 일하게 됐어? 어떤 오류가 발생하고 있습니까? –

답변

3

SoapClient는 PHP5의 통합되고 적극적으로 유지 관리되는 부분입니다. cURL은 HTTP 데이터를 보내는 빠르고 더러운 방법입니다. 현명한 장기적인 결정은 SoapClient와 그 방법을 고수하는 것입니다. http://www.php.net/manual/en/soapclient.soapcall.php#102387

+0

글쎄, cURL은 정확하게 일을하지 못하고있다. QUICK - 빠른 방법은'file_get_contents()'일 것이고, 그것은 정말로 더럽다. cURL은 SSL에 대한 보안 기본 설정을 준수하는 이점이 있지만 올바른 것입니다. 내부적으로 구현 된 WSDL/XML 구문 분석이없는 cURL 또는 다른 것으로 Soap을 수행하는 것은 번거로운 작업입니다. – Sven

+1

PHP SOAP 클라이언트는 매우 융통성이 없으며 밀접한 무언가를하는 유스 케이스에는 사용하기가 어렵습니다. 예를 들어 SOAP 봉투에서 여러 XML 네임 스페이스를 사용하는 문서를 래핑해야하는 경우 네임 스페이스 별칭을 제어 할 수 없습니다 (ns1, ns2, ns3 ...). SOAP - PHP 클래스 매핑도 가능할뿐만 아니라 작동하지 않습니다. 때로는 자신의 XML을 구축하고 cURL을 사용하여 실제 전화를 걸고 오류 사례를 직접 처리하는 것이 더 나을 수도 있습니다. – GordonM