![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Próbuję się połączyć za pomocą SoapClient z usługą:
W odpowiedzi dostaję: Error Fetching http headers To moja pierwsza styczność z tego typu "połączeniem". Czy ktoś z Was kiedyś korzystał z soap-a w PHP? Czy do połączenia zazwyczaj wymagane są dane do logowania? Niestety nie mogę udostępnić publicznie pliku xxx.svc. Ten post edytował markuz 24.06.2014, 09:30:48 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko zależy od usługi. W dokumentacji usługi powinna być informacja czy logowanie jest wymagane, a jeśli tak to w jaki sposób.
-------------------- Jeśli ten post pomógł to kliknij przycisk
![]() Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
W tym problem, że nie istnieje coś takiego jak dokumentacja usługi
![]() Ten post edytował markuz 24.06.2014, 13:18:03 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Błąd często spotykany, gdy połączenie z serwisem trwa dłużej, niżbyśmy oczekiwali. Zwiększ timeout, albo w pliku php.ini albo w kodzie:
Oczywiście serwis pod wskazanym adresem musi być dostępny. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ze źródła usługi na pewno można wywnioskować.
W WDSL możesz sprawdzić, czy jest jakaś funkcja której nazwa sugeruje, że służy do logowania. -------------------- Jeśli ten post pomógł to kliknij przycisk
![]() Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@mortus
Już próbowałem - nic to nie dało. Serwis jak najbardziej jest dostępny. Dane logowania CHYBA nie są wymagane ponieważ mogę pobrać funkcje i typy za pomoca : __getFunctions() i __getTypes(). @kartin Mam funkcję LogonResponse Logon(Logon $parameters) - jak się do niej prawidłowo odnieść? Ze źródeł wiem, że argumentami są: Kod Public Function Logon(Name As String, Password As String, Version As System.Version) As LogonResult Implements ICutter.Logon Próbowałem dużo różnych "kombinacji" za każdym razem jest problem z nagłówkiem - albo z kodowaniem albo Error Fetching http headers. Zaraz wyłapię ten z kodowaniem żebyście dokładnie wiedzieli - może ktoś coś ![]() Ten post edytował markuz 24.06.2014, 13:31:03 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dane logowania CHYBA nie są wymagane ponieważ mogę pobrać funkcje i typy za pomoca : __getFunctions() i __getTypes(). To nie ma żadnego związku z koniecznością logowania lub jej brakiem.Dla pewności sprawdź jakie nazwy parametrów są podane w typie Logon Ten post edytował kartin 24.06.2014, 13:36:04 -------------------- Jeśli ten post pomógł to kliknij przycisk
![]() Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
@kartin - Myślałem, że logowanie powinno się odbywać jeszcze przed możliwością pobrania funkcji tzn. z konstruktora SoapClient. Ale skoro mówisz inaczej - to bd próbował z tym Logon coś zrobić.
Błąd: Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'. Opcje? ![]() Dodatkowo SoapFault Object (Exception) zwraca: Kod [trace:Exception:private] => Array ( [0] => Array ( [function] => __doRequest [class] => SoapClient [type] => -> [args] => Array ( [0] => ASD1231.0.0.3 [1] => ..... [2] => http://tempuri.org/ICutter/Logon <------------- [3] => 1 [4] => 0 ) ) Strzałką zaznaczyłem 3 argument -> http://tempuri.org/ - wątpię aby to mogło zadziałać - więc wina jest pewnie po ich stronie - tak? Ten post edytował markuz 24.06.2014, 13:46:58 -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Jeśli ten post pomógł to kliknij przycisk
![]() Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ... |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
To nic nie zmienia. Nadal błędy te same.
Teraz się dowiedziałem, że: - Usługa używa SOAP w wersji 1.2 (to da się zmienić w parametrze $options SoapClient) - Usługa używa Reliable Sessions I o tym drugim nie mogę znaleźć żadnej informacji która odnosiła by się w jakikolwiek sposób do PHP-a. Słyszał ktoś o czymś takim? -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jest takie fajne narzędzie - Soap UI. Bez PHP możesz przeprowadzić symulację żądania.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Korzystałem z niego i albo nie potrafię poprawnie skonfigurować połączenia albo coś jest nie tak z usługą - chociaż programista od usługi twierdzi, że wszystko jest ok ponieważ łączy się przez nią w aplikacji (.NET).
1: screen 1 Jako SOAPAction jest http://tempuri.org/ICutter/Logon - tempuri.org to domyślna nazwa (z tego co czytałem powinno się ją zmienić - ale to jest możliwe tylko po stronie usługi - tak?). 2: screen 2 Tutaj widzimy zapytanie oraz odpowiedź. Ustawiony jest SOAP w wersji 1.2 oraz aktywne są WS-Reliable Messaging Ktoś widzi jakiś błąd który mógł powodować taką odpowiedź (błędną)? @EDIT Namespace zostało zmienione na "chyba" poprawne. Teraz SoapUI zwraca: Cytat The action http://xxx/ICutter/Logon is not supported by this endpoint. Only WS-ReliableMessaging February 2005 messages are processed by this endpoint. Nie mam zdefiniowanego "endpoint" ponieważ nie wiem co to jest. Znalazłem taką definicję: Cytat Sender's responder (endpoint) To receive an asynchronous Acknowledgment the sender must have an endpoint to handle them. The WSRMSequenceAcknowledgment() procedure must be exposed at that endpoint. This accepts and processes asynchronous Acknowledgment. This is used to accept a SequenceAcknowledgment response from a remote party so it will process the response and will set the state of messages that are acknowledged. Po stronie PHP-a nawet nie doszedłem do tego błędu - zatrzymałem się na błędzie z nagłówkami. Może ktoś miał kiedyś taki problem? Komuś udało się poprawnie skonfigurować klient-a w PHP? Próbowałem znaleźć jakieś informacje na temat WS-Reliable Messaging w PHP, jedyne co znalazłem to autoryzacja która mnie nie dotyczy - ponieważ ja wykonuję autoryzację poprzez odwołanie do Logon. Ten post edytował markuz 3.07.2014, 14:45:14 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:13 |