Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

Hej!
Może mi ktoś pomoże bo wymiękam.
Odpalam wystawiony webservice .
Pierw metoda

SoapClient::__getFunctions
$client = new SoapClient($adres);
$client-->__getFunctions();
//wynik ok

Zwraca mi tablice z dostepnymi metoda - OK
Nastepnie chce wywolac jakas metoda


$client->jakasMetoda()


I kicha. Skrypt stoi a po chwili dostaje


[previous:Exception:private] =>
[faultstring] => Could not connect to host
[faultcode] => HTTP


Blad bylby zrozumialby gdyby metoda getFunctions nic nie zwracala ale w tym wypadku nie wiem co jest grane.
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: [WebService] Could not connect to host

Możesz mieć zacachowany plik WSDL, wtedy błąd stałby się zrozumiały na nowo.
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

array z ktorym odpalam clienta,wiec nie cache'uje


$params= array(
'local_cert' => '/etc/ssl/certs/test.pem',
'trace'=>true,
'exceptions' => true,
'cache_wsdl' =>0
);

$client = new SoapClient($adres1,$params);Krzysztof Białkowski edytował(a) ten post dnia 23.02.11 o godzinie 16:44
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: [WebService] Could not connect to host

Ok. Jeśli tego jeszcze nie zrobiłeś, to może spróbuj dowiedzieć, jak brzmi nazwa hostu, z którym się nie da połączyć. Może w WSDL są jakieś śmieci/błędne dane odsyłające w krzaki.
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

do ws probowałęm się zarówno połaczyć po adresie ip jak i po nazwie hosta - kicha
Wpis w /etc/hosts jest oczywiscie
Jacek Z.

Jacek Z. Web Application
Developer

Temat: [WebService] Could not connect to host

Nie sądzę, żeby to cokolwiek zmieniło, ale spróbowałbym jeszcze inaczej wywołać metodę (Twój sposób jest już z jakiegoś powodu w aktualnej wersji PHP "deprecated").

Zamiast
$client->jakasMetoda()


wywołaj:
$client->__soapCall('jakasMetoda', array(argumenty))
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: [WebService] Could not connect to host

Prawie na pewno masz problem z certyfikatem, nie z dostępem do serwera: http://bugs.php.net/bug.php?id=36104

Jeżeli to self-signed cert, spróbuj tak:

$this->client = new SoapClient($wsdlFile,
array('login' => self::USERNAME,
'password' => self::PASSWORD,
'cacert' => $certFile,
'allow_self_signed' => true,
'verify_peer' => false));


Login i hasło oczywiście w przypadku, kiedy są wymagane.

Pozdrawiam.Marcin MOLGA edytował(a) ten post dnia 24.02.11 o godzinie 00:34
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

Niestety wyłowanie przez soapCall nic nie daje.
Również przychylam się do opinii pana Marcina, że to coś z certami.
Probowałem opcji


$params= array(
'local_cert' =>'/etc/ssl/certs/cert.pem',
'allow_self_signed' => true,
'verify_peer' => true,
'trace'=>true,
'exceptions' => true,
'cache_wsdl' =>0
);


Opcji self_signed i verify_peer probowalem na wszystkie kombinacje jednak ciągle ten sam problem.
Macie jeszcze jakieś pomysły albo jak to może zwefykować z jakiś bardziej konkretnym komunikatem bo 'Could not connect' jest nie zbyt dużo mówiące.
Klucz prywatny jest w cercie.

Dziwie mnie także, że bez problemu wywołuje się metoda __getFunction().Krzysztof Białkowski edytował(a) ten post dnia 24.02.11 o godzinie 12:20
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: [WebService] Could not connect to host

Krzysztof Białkowski:
Macie jeszcze jakieś pomysły albo jak to może zwefykować z jakiś bardziej konkretnym komunikatem bo 'Could not connect' jest nie zbyt dużo mówiące.

Ja kiedyś przy podobnych problemach testowałem połączenie przy pomocy curl i openssl. Możesz zacząć od próby pobrania WSDL, w drugim kroku jako zapytanie podaj XMLa generowanego przez SoapClienta (SoapClient::__getLastRequest()).Michał Sznurawa edytował(a) ten post dnia 24.02.11 o godzinie 12:53
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

openssl s_client polaczylem sie do servera.(nie do samego pliku).
Curlem udalo mi sie pobrac wsdl'a.
Masz moe przyklad moze jak obsluzyc webservice (wiem sa google ale znalezc cos sensownego to ciezko). W ogole sama idea uzycia curl'a jest mocno hardkorowa ; )Krzysztof Białkowski edytował(a) ten post dnia 24.02.11 o godzinie 13:01
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: [WebService] Could not connect to host

Spróbuj użyć opcji 'cacert', nie 'local_cert', wg instrukcji:
http://phpwebservices.blogspot.com/2008/03/calling-htt...

Pozdrawiam.
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: [WebService] Could not connect to host

man curl czy tam curl --help;) Takie kawałki kodu znalazłem w swoich archiwach. Jak je wymieszasz, trochę przerobisz, to powinno być to, czego potrzebujesz.


openssl s_client -cert cert.pem -connect some.host.com:80

curl -H "Content-Type: text/xml; charset=utf-8" \
-H "SOAPAction: \"https://some.host.com/ActionName\"" \
-d @$SCRIPTPATH/request_ws.xml \
-X POST https://some.host.com/index.php

curl -v -3 -E cert.pem https://some.host.com/index.php
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

Marcin MOLGA:
Spróbuj użyć opcji 'cacert', nie 'local_cert', wg instrukcji:
http://phpwebservices.blogspot.com/2008/03/calling-htt...

Pozdrawiam.

Parametru cacert nie ma w interfejsie soapclient gdyz otrzymuje

SOAP-ERROR: Parsing WSDL: Couldn't load from

Czyli nie moglem wczytac wsdl'a.
Niestety nie mam mozliwosci doinstalowania WSClient'a
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: [WebService] Could not connect to host

Krzysztof Białkowski:
Parametru cacert nie ma w interfejsie soapclient gdyz otrzymuje

Dobrze, że moje środowisko tego nie wie i póki co działa :)
Czyli nie moglem wczytac wsdl'a.
Niestety nie mam mozliwosci doinstalowania WSClient'a

Ja używam gołego rozszerzenia php_soap, v. 5.2.10. Plik wsdl ładowany lokalnie z dysku, certyfikat (tyle że CER, nie PEM) ładowany opcją 'cacert', self-signed. Działa jak złoto, kod podałem wyżej.
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

Marcin MOLGA:
Krzysztof Białkowski:
Parametru cacert nie ma w interfejsie soapclient gdyz otrzymuje

Dobrze, że moje środowisko tego nie wie i póki co działa :)
Czyli nie moglem wczytac wsdl'a.
Niestety nie mam mozliwosci doinstalowania WSClient'a

Ja używam gołego rozszerzenia php_soap, v. 5.2.10. Plik wsdl ładowany lokalnie z dysku, certyfikat (tyle że CER, nie PEM) ładowany opcją 'cacert', self-signed. Działa jak złoto, kod podałem wyżej.


Prawda leży po środku ; )
Faktycznie cacert działa ale tylko gdy wsdl jest ładowany z pliku, jak ładujemy z adresu nalezy uzyc local-cert.
Nie mniej jednak przy uzyciu cacert,nadal pozostaje blad COuld not conncect


$params= array(
'cacert'=>"cert.pem",
'allow_self_signed' => true,
'trace'=>true,
'verify_peer' => false,
'exceptions' => true,
'cache_wsdl' =>WSDL_CACHE_NONE
);
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [WebService] Could not connect to host

Rychło w czas ale brakowało certa dogranego w /etc/ssl/certs
Uproszczony opis
http://turboflash.wordpress.com/2009/06/23/curl-adding...



Wyślij zaproszenie do