konto usunięte

Temat: try catch z SOAP (z logowaniem)

W uproszczeniu mam taki kod:

$parameters = array(
'login' => $login,
'password' => $password,
);
try{
$client = new SoapClient('https://testapi.schenker.pl/services/TransportOrders/?wsdl', $parameters);
$this->connect = $client;
}
catch (Exception $e){
$this->connect = false;
}

W momencie, kiedy podaje dobre dane do logowania jest wszystko ok, ale w momencie kiedy podaje złe wywala mi błąd:

Warning: SoapClient::SoapClient(https://testapi.schenker.pl/services/TransportOrders/?w... [soapclient.soapclient]: failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in C:\VertrigoServ\www\www\sklep_motob2b\modules\schenker\inc\schenker_api.php on line 23

Nie mogę sobie z tym poradzić. Wydaje mi się, że próbowałem wszystkiego. Try Catch nie przejmuje wyjątku. Czy ktoś jest w stanie mi pomóc?

Temat: try catch z SOAP (z logowaniem)

Jarosław O.:
Czy ktoś jest w stanie mi pomóc?

Proste - jak podajesz złe dane logowania to nie przechodzi autoryzacji HTTP.
Nie wywaliło Ci błędu tylko ostrzeżenie - a to jest różnica :)
W catch łap SoapFault zamiast ExceptionTen post został edytowany przez Autora dnia 04.08.14 o godzinie 15:52

konto usunięte

Temat: try catch z SOAP (z logowaniem)

OK, ostrzeżenie. Tak czy tak zatrzymuje cały skrypt.
Dlaczego to się dzieje, to wiem. Nie rozumiem dlaczego nie mogę tego przechwycić przez Try Catch.

Temat: try catch z SOAP (z logowaniem)

Może masz ustawione żeby dla warningów zatrzymywało skrypt ?

Mi wpada to w catch.
Podrzuć poprawny link do wsdla jeżeli możesz.

konto usunięte

Temat: try catch z SOAP (z logowaniem)

https://testapi.schenker.pl/services/TransportOrders/?wsdl

Właśnie z innymi API radzi sobie bez problemów. Z tym konkretnym mam jakiś problem.

Temat: try catch z SOAP (z logowaniem)

Jarosław O.:
https://testapi.schenker.pl/services/TransportOrders/?wsdl

Właśnie z innymi API radzi sobie bez problemów. Z tym konkretnym mam jakiś problem.

Hmm ja z kolei dostaję co innego:

SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://testapi.schenker.pl/services/TransportOrders/?wsdl'


Spróbuj ściągnąć ten wsdl na dysk i do niego podawać ścieżkę.

konto usunięte

Temat: try catch z SOAP (z logowaniem)

W sumie to ja dostaję 3 błędy (2 PHP i 1 PrestaShop) - wklejam poniżej.

Jak ściągnąć WSDL? Jako plik XML? Sorry, jeśli głupie pytanie, ale z WSDLem nie miałem zbyt dużo wspólnego.

( ! ) Warning: SoapClient::SoapClient(https://testapi.schenker.pl/services/TransportOrders/?w... [soapclient.soapclient]: failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized in C:\VertrigoServ\www\www\sklep_motob2b\modules\schenker\inc\schenker_api.php on line 23
Call Stack
# Time Memory Function Location
1 0.0016 381048 {main}( ) ..\index.php:0
2 0.2103 6913704 DispatcherCore->dispatch( ) ..\index.php:50
3 0.3987 11965536 ControllerCore->run( ) ..\Dispatcher.php:349
4 0.5894 16335360 AdminModulesControllerCore->initContent( ) ..\Controller.php:167
5 0.5921 16341704 ModuleCore::getModulesOnDisk( ) ..\AdminModulesController.php:1001
6 6.0058 21083984 Schenker->__construct( ) ..\Module.php:1059
7 6.0102 21086456 Schenker_api->__construct( ) ..\schenker.php:27
8 6.0102 21086976 SoapClient->SoapClient( ) ..\schenker_api.php:23

( ! ) Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://testapi.schenker.pl/services/TransportOrders/?wsdl' : failed to load external entity "https://testapi.schenker.pl/services/TransportOrders/?wsdl" in C:\VertrigoServ\www\www\sklep_motob2b\modules\schenker\inc\schenker_api.php on line 23
Call Stack
# Time Memory Function Location
1 0.0016 381048 {main}( ) ..\index.php:0
2 0.2103 6913704 DispatcherCore->dispatch( ) ..\index.php:50
3 0.3987 11965536 ControllerCore->run( ) ..\Dispatcher.php:349
4 0.5894 16335360 AdminModulesControllerCore->initContent( ) ..\Controller.php:167
5 0.5921 16341704 ModuleCore::getModulesOnDisk( ) ..\AdminModulesController.php:1001
6 6.0058 21083984 Schenker->__construct( ) ..\Module.php:1059
7 6.0102 21086456 Schenker_api->__construct( ) ..\schenker.php:27
8 6.0102 21086976 SoapClient->SoapClient( ) ..\schenker_api.php:23

[PrestaShop] Fatal error in module schenker_api:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://testapi.schenker.pl/services/TransportOrders/?wsdl' : failed to load external entity "https://testapi.schenker.pl/services/TransportOrders/?wsdl"

Temat: try catch z SOAP (z logowaniem)

Jarosław O.:
W sumie to ja dostaję 3 błędy (2 PHP i 1 PrestaShop) - wklejam poniżej.

Jak ściągnąć WSDL? Jako plik XML? Sorry, jeśli głupie pytanie, ale z WSDLem nie miałem zbyt dużo wspólnego.
Tak, ale nie rób tego - sprawdziłem - nic to nie da.

Skoro dostajesz Fatal error to musisz go przechwycić. Nie ma innej opcji.Ten post został edytowany przez Autora dnia 04.08.14 o godzinie 16:29
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: try catch z SOAP (z logowaniem)

exceptions => 1 jako parametr tablicy w drugim parametrze soapclienta

Pomogło?

konto usunięte

Temat: try catch z SOAP (z logowaniem)

Sebastian O.:
Jarosław O.:
W sumie to ja dostaję 3 błędy (2 PHP i 1 PrestaShop) - wklejam poniżej.

Jak ściągnąć WSDL? Jako plik XML? Sorry, jeśli głupie pytanie, ale z WSDLem nie miałem zbyt dużo wspólnego.
Tak, ale nie rób tego - sprawdziłem - nic to nie da.

Skoro dostajesz Fatal error to musisz go przechwycić. Nie ma innej opcji.

Tylko jak? Właśnie nie mogę go przechwycić.

Janusz S.:
exceptions => 1 jako parametr tablicy w drugim parametrze soapclienta

Pomogło?

Nie. Tak też próbowałem. Mam wrażenie, że przeczytałem całe google zanim tu napisałem :P

Temat: try catch z SOAP (z logowaniem)

Nie znam się na prestashopie więc możę wrzuć tylko ten kawałek kodu do oddzielnego pliku i odpal.
Zobacz jaki dostaniesz wynik. Ja bynajmniej nie dostaję tego warninga tylko od razu Fatal error który łapię w catch.
Napisz jeszcze na jakiej wersji php pracujesz.Ten post został edytowany przez Autora dnia 04.08.14 o godzinie 22:00

konto usunięte

Temat: try catch z SOAP (z logowaniem)

PHP 5.3
Jak wrzucę małpę przed wywołaniem i wyłączę Xdebuga, to nawet przechodzi dalej, tylko presta łapie. Ale nie mogę w żaden sposób przechwycić errora w całości.

konto usunięte

Temat: try catch z SOAP (z logowaniem)

Dzięki przedmówcą za pomoc, ale problem nadal występuje. Czy ktoś ma jakiś pomysł?

konto usunięte

Temat: try catch z SOAP (z logowaniem)

Sebastian O.:
Nie znam się na prestashopie więc możę wrzuć tylko ten kawałek kodu do oddzielnego pliku i odpal.
Zobacz jaki dostaniesz wynik. Ja bynajmniej nie dostaję tego warninga tylko od razu Fatal error który łapię w catch.

Dobrze zrozumiałem, że Tobie udało się przechwycić? Wyślesz swój kod? Może jakiś drobny błąd mam, którego nie zauważyłem. A może konfiguracja serwera.

Temat: try catch z SOAP (z logowaniem)

Jarosław O.:
Wyślesz swój kod? Może jakiś drobny błąd mam, którego nie zauważyłem. A może konfiguracja serwera.

Uruchomiłem Twój kod z 1 posta i wpadło w catch.
Może prestashop ma jakąś specyficzną obsługę błędów - nie wiem.
Dlatego napisałem żebyś uruchomił ten kod jako oddzielny skrypt na serwerze.
Ewentualnie postaw na kompie xamppa i przetestuj.

konto usunięte

Temat: try catch z SOAP (z logowaniem)

Sebastian O.:
Jarosław O.:
Wyślesz swój kod? Może jakiś drobny błąd mam, którego nie zauważyłem. A może konfiguracja serwera.

Uruchomiłem Twój kod z 1 posta i wpadło w catch.
Może prestashop ma jakąś specyficzną obsługę błędów - nie wiem.
Dlatego napisałem żebyś uruchomił ten kod jako oddzielny skrypt na serwerze.
Ewentualnie postaw na kompie xamppa i przetestuj.

Uruchomiłem tak jak mówiłeś na WampServer i teraz mam 2 warningi i 1 error. Dziwne :P

konto usunięte

Temat: try catch z SOAP (z logowaniem)

Zamknięty.
Dzięki wszystkim za pomoc.
Potestowałem na innych komputerach/serwerach i błąd występuje tylko i wyłącznie u mnie. Wszędzie indziej zachowuje się prawidłowo. Jak będę miał czas, pewnie poszukam tego przyczyny, ale ogólnie leży ona po stronie mojego komputera/serwera.

Następna dyskusja:

Wywołanie catch(Exception $e)




Wyślij zaproszenie do