Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Test SOAP
Forum PHP.pl > Forum > PHP
bmaci3k
Witajcie.
Znalazłem w necie taki przykładowego klienta do Webservise PocztyPolskiej

Działa ok zwraca żądane informacje.
Problem polega na tym że pokazuje je wszystkie na raz. Pomóżcie mi rozdzielić te dane

Kod klienta i moja poprwka nie działająca:
  1. <?php
  2.  
  3.  
  4. //używamy biblioteki nusoap
  5. require_once "lib/nusoap.php";
  6. $NAMESPACE = "http://sledzenie.pocztapolska.pl";
  7. $client = new nusoap_client("https://tt.poczta-polska.pl/Sledzenie/services/Sledzenie?wsdl", "wsdl");
  8. $client->soap_defencoding = "UTF-8";
  9. $client->decode_utf8 = false;
  10. //nagłówek z użytkownikiem i hasłem trzeba przekazać jako gotowy kod XML
  11. $header = "<wsse:Security xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'>";
  12. $header.= "<wsse:UsernameToken xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'>";
  13. $header.= "<wsse:Username>sledzeniepp</wsse:Username>";
  14. $header.= "<wsse:Password Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'>PPSA</wsse:Password>";
  15. $header.= "</wsse:UsernameToken>";
  16. $header.= "</wsse:Security>";
  17. // przypisanie numeru do wyszukiwania
  18. $numer = "00159007738084377234";
  19. try{
  20. if($err = $client->getError()){
  21. echo 'Wystąpił błąd';
  22. }else{
  23. $result = $client->call("sprawdzPrzesylkePl", array("numer" => $numer),$NAMESPACE,'',$header);
  24. if($result['return']['status']==0) {
  25. //jeśli status poprawny wyświetlamy cały zwrócony obiekt
  26. print_r($result);
  27.  
  28. //mój dodany sposób wyświetlania poszczególnych odpowiedzi
  29. echo 'Kraj nadania paczki: ' .$result['krajNadania'].'<br/>';
  30. echo 'Masa paczki: ' .$result['masa'].'<br/>';
  31.  
  32.  
  33. }
  34. }
  35. }
  36. }catch(SoapFault $fault){
  37. print_r($fault);
  38. print("Fault string: " . $fault->faultstring . "\n");
  39. print("Fault code: " . @$fault->detail->WebServiceException->code . "\n");
  40.  
  41. }
  42.  
  43. ?>


Zauważyłem, że chodzi o poziom danych. Jeśli zrwócę wszystkie dane to mam:

Array ( [return] => Array ( [danePrzesylki] => Array ( [dataNadania] => 2013-10-21 [kodKrajuNadania] => PL [kodKrajuPrzezn] => PL [kodRodzPrzes] => B [krajNadania] => POLSKA [krajPrzezn]


Powiedzcie jak odwołać się do kolejnych poziomów. return/danePrzesyłki/krajNadania w:

echo 'Kraj nadania paczki: ' .$result['krajNadania'].'<br/>';
Damonsson
rezultat SOAP powinien być obiektem, ale jeśli masz tablicę no to normalnie jak tablica:

  1. $result['return']['danePrzesylki']['krajNadania']
bmaci3k
Dzięki teraz działa poprawnie. A możesz mi podpowiedzieć jak zrobić to za pomoca obiektu?
freemp3
Jeśli dostajesz tablice to nie zrobisz tego za pomocą obiektu.
Damonsson
To serwer webservice, czyli poczta, powinna zwracać obiekt. Bynajmniej ja korzystałem z webservice, które zwracały obiekty, pierwszy raz widzę tablicę. Ty pracujesz na tym co dostajesz od nich, czyli na tablic. Na upartego, można zrobić z tablicy obiekt, ale nie ma to sensu, sztuka dla sztuki.
ber32
Witam.

Może się przyda

  1. echo "1 dł_Geograf ".$result['danePrzesylki']['zdarzenia']['zdarzenie']['0']['jednostka']['daneSzczegolowe']['dlGeogr']."<br />";
  2. echo "1 ser_Geograf ".$result['danePrzesylki']['zdarzenia']['zdarzenie']['0']['jednostka']['daneSzczegolowe']['szerGeogr']."<br />";


do mapki google
http://www.joomla-cms.com.pl/poczta_polska/poczta_polska.php

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.