Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 25. 3. 2015, 10:04:42
Jde prosím nějak v PHP vytvořit výpis obsahu XML požadavku ze SoapClienta?
Když tam mám např: $soapClient = new SoapClient("/file.wsdl"); $ws_result = $soapClient->function($parameter); $soapClient->function($parameter); ) bez toho, abych ho nějak posílal (hází mi to fatal error)
|
||
juriad Profil |
#2 · Zasláno: 25. 3. 2015, 10:10:55
Nejde to před odesláním, ale těsně po odeslání.
Viz stackoverflow.com/a/3572445/4052811 |
||
quatzael Profil |
#3 · Zasláno: 25. 3. 2015, 10:24:24
juriad:
A jde aspoň nějak nastavit, aby se script neukončil po týhle fatal error a běžel dál na ten výpis? |
||
juriad_ Profil * |
#4 · Zasláno: 25. 3. 2015, 10:36:09
Co je to za fatal error? Mel bys jej opravit a nikoli skryt a ignorovat.
|
||
quatzael Profil |
#5 · Zasláno: 25. 3. 2015, 10:38:55 · Upravil/a: quatzael
juriad:
No právě v tom Soap requestu. Potřebuju vidět co se tam posílá, abych zjistil kde je chyba.. juriad: Konkrétně je to: Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'Data' property |
||
juriad Profil |
#6 · Zasláno: 25. 3. 2015, 10:58:53
Tak prostě tomu klientovi předáváš špatná data nebo data ve špatném formátu.
Co je $parameter? Nejlépe to var_dumpni. Jak vypadá předpis té funkce? |
||
quatzael Profil |
#7 · Zasláno: 25. 3. 2015, 11:24:28
juriad:
Zkoušel jsem tu metodu __getLastRequest testovat na requestu, který je v pořádku, ale žádný XML mi to teda nevyplivlo.. Jenom hodnoty parametrů jeden za druhým nijak neoddělený bez mezer..
Já potřebuju přímo to XML, který ten PHP SoapClient generuje, tzn.: <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://adresa.cz"> <soapenv:Header/> <soapenv:Body> ... atd. ... „Tak prostě tomu klientovi předáváš špatná data nebo data ve špatném formátu.“ O to právě jde. A já potřebuju zjistit co tam fakticky jde.. Ve skutečnosti jsou tam dva parametry oddělený čárkou, tedy: $ws_result = $soapClient->function($login,$xml); První parametr jsem vyřešil. Jedná se o nějaký strukturovaný objekt. Druhý parametr je v dokumentaci popsán jako "obsah souboru xml" Ale ať to tam cpu jak chci tak to nic nebere. Ten soubor xml je testovací ukázka, takže by měl být správně. Zkoušel jsem s tím různý psí kusy, např: $xml = simplexml_load_file( 'test.xml'); $xml = simplexml_load_string($xml_string); |
||
juriad Profil |
#8 · Zasláno: 25. 3. 2015, 11:35:31
quatzael:
„ale žádný XML mi to teda nevyplivlo“ A vytvořil jsi SOAP klienta se zapnutým trace? V případě chyby to XML nejspíš ani nesestaví. |
||
quatzael Profil |
#9 · Zasláno: 25. 3. 2015, 11:42:49
juriad:
Já jsem to zkoušel na requestu, který mi funguje. Trace jsem tam zadal. když tam zadaný není tak to nevypíše vůbec nic. Ale když ho tam zadám tak to udělá něco takovýho: $array = array ('jmeno'=>'Kyblicek','kamarad'=>'Lopatka','cislo'=>8); $request = $soap_client->__call('Function',$array); echo "REQUEST: " . $soap_client->__getLastRequest() . "\n"; //napíše: "REQUEST: KyblicekLopatka8 |
||
juriad Profil |
#10 · Zasláno: 25. 3. 2015, 11:47:47
A zkusil jsi i přečíst i první komentář v dokumentaci?
|
||
quatzael Profil |
#11 · Zasláno: 25. 3. 2015, 12:00:37
juriad:
Teď už jo:o) Supr, to je to co jsem chtěl!! Díky moc!! A šlo by to i nějak obráceně? Jako že bych z toho celýho XML Stringu to zase vrátil do klasickýho requestu? Teď se dívám do dokumentace.. Asi na to bude metoda __doRequest , že?
|
||
quatzael Profil |
juriad:
Tak údajně má ten čistej XML request vypadat nějak takto: <xml_data> <![CDATA[ <content xmlns="http://www.adresa.cz/path" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" id="101010"> ... </content> ]]> </xml_data> A v tom druhým parametru, který představuje element <xml_data> má být obsah souboru test.xml , který ale začíná tou XML deklarací:
<?xml version="1.0" encoding="WINDOWS-1250"?> <content xmlns="http://www.adresa.cz/path" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" id="101010"> ... Jak tedy sestavit ten parametr do toho SOAP requestu, aby se načetl ten soubor, odstranil se ten první řádek s XML deklarací (je-li to opravdu potřeba) a ještě se to hodilo do toho <![CDATA[ ... ]]> ?
|
||
Časová prodleva: 9 let
|
0