Czy ktoś z Was próbował w PHP połączyć się z webservice SZOI i przesłać plik?
Mam taki kod, ale po zalogowaniu nie mogę przesłać pliku: Błąd przesyłania pliku: SOAP-ERROR: Parsing WSDL: 'executeServiceRequestMsg' already defined
<?php // Konfiguracja $brokerWsdlUrl = "https://www-2.nfz-lublin.pl/ws-broker-server-dostep/services/ServiceBroker?wsdl"; $authWsdlUrl = "https://www-2.nfz-lublin.pl/kaas/services/Auth?wsdl"; // Usługa logowania $username = "*****"; $password = "*****"; $domain = "03"; // Domena $filePath = "*****.xml"; // Ścieżka do pliku // Weryfikacja pliku } // Funkcja konwersji obiektu do tablicy function objectToArray($object) { return json_decode(json_encode($object), true); } // Funkcja logowania function login($authWsdlUrl, $username, $password, $domain) { try { $arrContextOptions = [ "ssl" => [ "verify_peer" => false, "verify_peer_name" => false, ] ]; $options = [ 'soap_version' => SOAP_1_2, 'exceptions' => true, 'trace' => true, 'cache_wsdl' => WSDL_CACHE_NONE, ]; $params = [ 'credentials' => [ ['name' => 'domain', 'value' => ['stringValue' => $domain]], ['name' => 'login', 'value' => ['stringValue' => $username]] ], 'password' => $password ]; $clientAuth = new SoapClient($authWsdlUrl, $options); $loginHeaders = null; $clientAuth->__soapCall('login', [$params], null, null, $loginHeaders); // Debug: Wyświetlenie nagłówków $loginHeadersArray = objectToArray($loginHeaders); // Pobranie sessionId i authToken $sessionId = $loginHeadersArray['session']['id']null;
$authToken = $loginHeadersArray['authToken']['id']null;
if (!$sessionId || !$authToken) { } return [ 'sessionId' => $sessionId, 'authToken' => $authToken ]; } catch (SoapFault $e) { } } // Funkcja przesyłania pliku function putFile($brokerWsdlUrl, $sessionId, $authToken, $filePath) { try { $arrContextOptions = [ "ssl" => [ "verify_peer" => false, "verify_peer_name" => false, ] ]; $options = [ 'soap_version' => SOAP_1_2, 'exceptions' => true, 'trace' => true, 'cache_wsdl' => WSDL_CACHE_NONE, 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, ] ]), ]; $client = new SoapClient($brokerWsdlUrl, $options); $headers = [ new SoapHeader("http://xml.kamsoft.pl/ws/common", "session", $sessionId), new SoapHeader("http://xml.kamsoft.pl/ws/common", "authToken", $authToken), ]; $client->__setSoapHeaders($headers); $response = $client->__soapCall("executeService", [ [ 'location' => [ 'localname' => "putFile", 'version' => "1.2", ], 'date' => $date, 'params' => [ ['name' => 'obszar', 'value' => 'LIOCZ'], ['name' => 'id_ow', 'value' => '03'], ['name' => 'id_swiad', 'value' => '******'], ], 'payload' => [ 'textload' => <<<XML <put-file xmlns="http://xml.kamsoft.pl/ws/broker/put-file/v1.2" typ="LIOCZ"> <content>$fileContent</content> </put-file> XML ] ] ]); } catch (SoapFault $e) { } } // Logowanie $tokens = login($authWsdlUrl, $username, $password, $domain); // Przesyłanie pliku putFile($brokerWsdlUrl, $sessionId, $authToken, $filePath); ?>