Próbuję nawiązać komunikację z serverem SOAP, który jest dostępny poprzez SSL. Gdy dokonuję łączenia tak, jak poniżej:
$url = "https://domena/ws.asmx?wsdl"; $client = new SoapClient( $url, "passphrase"=>'haslo' ) );
otrzymuję następujący błąd:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from...
Czyli tak, jakby nie była zwracana zawartość wsdl z podanej lokalizacji.
Próbowałem połączyć się z tą lokalizacją za pomocą CURLa:
$request='https://domena/ws.asmx?wsdl'; // Initialize the session $session = curl_init($request); curl_setopt($session, CURLOPT_VERBOSE, '1'); curl_setopt($session, CURLOPT_SSL_VERIFYHOST, '1'); curl_setopt($session, CURLOPT_SSL_VERIFYPEER, '1'); curl_setopt($session, CURLOPT_CAINFO, 'ca.crt'); curl_setopt($session, CURLOPT_SSLCERT, 'mycert.pem'); curl_setopt($session, CURLOPT_SSLCERTPASSWD, 'haslo');
i wówczas połączenie następuje. Otrzymałem jednak plik z kluczem, aby CURL akceptował certyfikaty podpisane przez CA (taką informację otrzymałem od osób zajmujących się webservice).
Podejrzewam, że błędy występujące podczas użycia klasy SoapClient mogą być związane właśnie z brakiem akceptacji mojego klucza (mycert.pem).
Czy ktoś z Was spotkał się z takim problemem lub wie, jak można temu zaradzić?