Autor | Zpráva | ||
---|---|---|---|
Pavel9876 Profil * |
#1 · Zasláno: 6. 9. 2011, 11:46:54
Ahoj,
mám problém s výše uvedeným problémem. Potřebuji odeslat na vzdálený server se SOAPem xml požadavek (níže uvedený). Nejdříve je ale nutné odeslat autorizační údaje, jenže nemůžu nikde najít nějaký blbuvzdorný zápis, všude po internetu jsou ty zápisy až moc složitý (odvozují se nové metody, vytvářejí nějaké vzdálené funkce atd.) a já se v tom ztrácím. když už by se mi nějak podařila použít třída SoapClient, která je implementovaná v PHP, tak se zadrhnu na tom, co dál. na netu jsem našel, že vytvořit spojení by mělo jít takhle: $soapClient = new SoapClient("https://soapserver.example.com/blahblah.asmx?wsdl"); // Prepare SoapHeader parameters $sh_param = array( 'Username' => 'username', 'Password' => 'password'); $headers = new SoapHeader('http://soapserver.example.com/webservices', 'UserCredentials', $sh_param); // Prepare Soap Client $soapClient->__setSoapHeaders(array($headers)); zde by asi mělo následovat odeslání toho xml requestu, ale v dokumentaci jsou u metody __doRequest () požadovány 4 parametry (request - etn vim, ale location, action a version), se kterými se nevím rady, navíc já ani nevím, jak ověřit, zda to spojení funguje neumíte někdo poradit? vím, že tu už pár takových vláken je, ale nejčastěji se týkaj něčeho jiného, nebo jsou přesně o tom samém, leč bez odpovědí a několik let staré na to, aby se znovu oživovala. xml požadavek: === POST /variows/Service.asmx HTTP/1.1 Host: {nějakej host} Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://server/variows/ExportFull" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ExportFull xmlns="http://server/variows/"> <Export>string</Export> </ExportFull> </soap:Body> </soap:Envelope> === předem děkuji, Pavel |
||
joe Profil |
#2 · Zasláno: 6. 9. 2011, 15:40:49
Tady je tutoriál, kde je to trochu rozepsané, co jsou ty parametry co píšeš.
http://www.herongyang.com/PHP/php_soap.html |
||
Pavel Strejček Profil |
#3 · Zasláno: 6. 9. 2011, 23:31:39
Víš určitě, že služba podporuje tento způsob přihlašování? Může používat třeba NTLM. Co je v dokumentaci a ve wsdl?
PHP SoapClient si s některými web servicemi neumí vůbec poradit. Může pomoci úprava requestu pomocí přetížené metody __doRequest(). |
||
Pavel9876 Profil * |
#4 · Zasláno: 7. 9. 2011, 14:26:23
problém byl v tom, že jsem neuměl správně nastavit SoapClienta, v mém případě pomohly tyto parametry
$options = array( 'soap_version'=>SOAP_1_2, 'exceptions'=>true, 'trace'=>1, 'cache_wsdl'=>WSDL_CACHE_NONE, 'login' => '{login}', 'password' => '{pass}', 'location' => "{host}/variows/ExportFull", 'uri' => "{host}/" ); $soap = new SoapClient(null, $options); takže problém byl jak v těch parametrech, tak asi i v tom, že jsem se pokoušel cpát adresu souboru s koncovkou .asmx (jak jsem to nekde viděl na php.net) jako prvni parametr SoapClient místo null autentizace byla právě nějaká windowsácká, basic autentizaci mi správce zapnul až teď, takže už ani ten SOAP nepotřebuju, ale aspoň sem se naučil něco nového :-) Díky všem za reakce Pavel |
||
Časová prodleva: 13 let
|
0