Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> websevice SZOI, Problem z logowaniem i przesłaniem pliku.
marekpulawy
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

Ostrzeżenie: (0%)
-----


Cześć,

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

  1. <?php
  2. // Konfiguracja
  3. $brokerWsdlUrl = "https://www-2.nfz-lublin.pl/ws-broker-server-dostep/services/ServiceBroker?wsdl";
  4. $authWsdlUrl = "https://www-2.nfz-lublin.pl/kaas/services/Auth?wsdl"; // Usługa logowania
  5. $username = "*****";
  6. $password = "*****";
  7. $domain = "03"; // Domena
  8. $filePath = "*****.xml"; // Ścieżka do pliku
  9.  
  10. // Weryfikacja pliku
  11. if (!file_exists($filePath)) {
  12. die("Plik $filePath nie istnieje.");
  13. }
  14.  
  15. // Funkcja konwersji obiektu do tablicy
  16. function objectToArray($object) {
  17. return json_decode(json_encode($object), true);
  18. }
  19.  
  20. // Funkcja logowania
  21. function login($authWsdlUrl, $username, $password, $domain) {
  22. try {
  23. $arrContextOptions = [
  24. "ssl" => [
  25. "verify_peer" => false,
  26. "verify_peer_name" => false,
  27. ]
  28. ];
  29. $options = [
  30. 'soap_version' => SOAP_1_2,
  31. 'exceptions' => true,
  32. 'trace' => true,
  33. 'cache_wsdl' => WSDL_CACHE_NONE,
  34. 'stream_context' => stream_context_create($arrContextOptions),
  35. ];
  36.  
  37. $params = [
  38. 'credentials' => [
  39. ['name' => 'domain', 'value' => ['stringValue' => $domain]],
  40. ['name' => 'login', 'value' => ['stringValue' => $username]]
  41. ],
  42. 'password' => $password
  43. ];
  44.  
  45. $clientAuth = new SoapClient($authWsdlUrl, $options);
  46. $loginHeaders = null;
  47.  
  48. $clientAuth->__soapCall('login', [$params], null, null, $loginHeaders);
  49.  
  50. // Debug: Wyświetlenie nagłówków
  51. echo "Nagłówki logowania:\n";
  52. print_r($loginHeaders);
  53.  
  54. $loginHeadersArray = objectToArray($loginHeaders);
  55.  
  56. // Pobranie sessionId i authToken
  57. $sessionId = $loginHeadersArray['session']['id'] (IMG:style_emoticons/default/questionmark.gif) null;
  58. $authToken = $loginHeadersArray['authToken']['id'] (IMG:style_emoticons/default/questionmark.gif) null;
  59.  
  60. if (!$sessionId || !$authToken) {
  61. die("Logowanie nie powiodło się: brak sessionId lub authToken.\n");
  62. }
  63.  
  64. echo "Zalogowano pomyślnie!\n";
  65. echo "Session ID: $sessionId\n";
  66. echo "Auth Token: $authToken\n";
  67.  
  68. return [
  69. 'sessionId' => $sessionId,
  70. 'authToken' => $authToken
  71. ];
  72. } catch (SoapFault $e) {
  73. echo "Błąd logowania SOAP:\n";
  74. echo "Kod błędu: " . $e->faultcode . "\n";
  75. echo "Opis błędu: " . $e->getMessage() . "\n";
  76. die();
  77. }
  78. }
  79.  
  80. // Funkcja przesyłania pliku
  81. function putFile($brokerWsdlUrl, $sessionId, $authToken, $filePath) {
  82. try {
  83. $arrContextOptions = [
  84. "ssl" => [
  85. "verify_peer" => false,
  86. "verify_peer_name" => false,
  87. ]
  88. ];
  89. $options = [
  90. 'soap_version' => SOAP_1_2,
  91. 'exceptions' => true,
  92. 'trace' => true,
  93. 'cache_wsdl' => WSDL_CACHE_NONE,
  94. 'stream_context' => stream_context_create([
  95. 'ssl' => [
  96. 'verify_peer' => false,
  97. 'verify_peer_name' => false,
  98. ]
  99. ]),
  100. ];
  101.  
  102. $client = new SoapClient($brokerWsdlUrl, $options);
  103.  
  104. $fileContent = base64_encode(file_get_contents($filePath));
  105. $date = date('Y-m-d\TH:i:s');
  106.  
  107. $headers = [
  108. new SoapHeader("http://xml.kamsoft.pl/ws/common", "session", $sessionId),
  109. new SoapHeader("http://xml.kamsoft.pl/ws/common", "authToken", $authToken),
  110. ];
  111.  
  112. $client->__setSoapHeaders($headers);
  113.  
  114. $response = $client->__soapCall("executeService", [
  115. [
  116. 'location' => [
  117. 'localname' => "putFile",
  118. 'version' => "1.2",
  119. ],
  120. 'date' => $date,
  121. 'params' => [
  122. ['name' => 'obszar', 'value' => 'LIOCZ'],
  123. ['name' => 'id_ow', 'value' => '03'],
  124. ['name' => 'id_swiad', 'value' => '******'],
  125. ],
  126. 'payload' => [
  127. 'textload' => <<<XML
  128. <put-file xmlns="http://xml.kamsoft.pl/ws/broker/put-file/v1.2" typ="LIOCZ">
  129.   <content>$fileContent</content>
  130. </put-file>
  131. XML
  132. ]
  133. ]
  134. ]);
  135.  
  136. echo "Plik przesłany pomyślnie:\n";
  137. print_r($response);
  138. } catch (SoapFault $e) {
  139. echo "Błąd przesyłania pliku: " . $e->getMessage() . "\n";
  140. }
  141. }
  142.  
  143. // Logowanie
  144. $tokens = login($authWsdlUrl, $username, $password, $domain);
  145.  
  146. // Przesyłanie pliku
  147. putFile($brokerWsdlUrl, $sessionId, $authToken, $filePath);
  148. ?>
  149.  


Ten post edytował marekpulawy 4.12.2024, 12:02:10
Go to the top of the page
+Quote Post

Posty w temacie
- marekpulawy   websevice SZOI   4.12.2024, 11:00:20
- - nospor   Z tego co znalazlem w necie, to wyglada jakby WSDL...   4.12.2024, 12:37:46


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 18:02