Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Loggen van alle SOAP response en request berichten

Pagina: 1
Acties:

  • Onoffon
  • Registratie: April 2006
  • Laatst online: 22-11 15:59
Hoi,

Ik heb een SoapServer en een SoapClient en hiervan wil ik graag alle inkomende en uitgaande berichten loggen t.b.v. debuggen. Voor de duidelijkheid het gaat hier om het complete XML bericht. De waarden in het XML bericht kan ik natuurlijk gewoon bekijken, maar ik wil graag het 'rauwe' xml bericht hebben.

Wat heb ik nu al:

SoapClient:

- Request: __getLastRequest
- Response __getLastResponse

SoapServer:

- Request: file_get_contents("php://input")
- Response: ??

Ik mis dus alleen het response bericht van de SoapServer. Het enige wat ik kan vinden via google is dit: https://blog.mayflower.de...r-PHP5-for-debugging.html. Maar hier kom ik ook niet echt verder mee, het lijkt er op alsof ik alleen het request bericht kan achterhalen.

Ik gebruik op dit moment de 'Addfunction' voor het toevoegen van een functie in mijn SoapServer.php bestand. Ik sluit deze functie met een return en uiteraard zit in het bestand ook een '$server->handle();'.

Ik neem aan dat er geen voorbeeld code benodigd is, zo ja, dan zal ik deze toevoegen. Ik ben vrij standaard begonnen met de server en client zoals deze in de vele bekende soap tutorials aanwezig zijn.

Ik hoop dat iemand mij kan helpen!


Ik gebruik de native Soap functie in PHP 5.3.3.

[ Voor 7% gewijzigd door Onoffon op 05-03-2014 16:14 ]

Just a simple thought....


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
als ik je vraag goed begrijp zou je eens kunnen kijken naar:

register_shutdown_function("JouwFunctie");

en dan in "JouwFunctie" gebruik maken van ob_get_contents achtige functionaliteit...

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 20-11 22:34

Firesphere

Yoshis before Hoshis

Waarom wil je beide kanten registreren? Is er een reden dat je denkt dat de response server-side anders is dan client-side?

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik verwacht dat SoapServer gewoon naar stdout schrijft. Dus dan kun je gewoon output buffering gebruiken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
drm schreef op woensdag 05 maart 2014 @ 23:07:
Ik verwacht dat SoapServer gewoon naar stdout schrijft. Dus dan kun je gewoon output buffering gebruiken.
dit kan sowieso... maar als je wilt dat php ook nog de juiste HTTP codes blijft sturen naar de client, dan verstoord outputbuffering het proces... mij lukte het althans niet om de output te bufferen, aan het einde dan weg te schrijven naar de database, en dan de output naar de client door te sturen met een mooie HTTP error (in geval van een fout uiteraard)... kreeg dan altijd 200 - OK terug... daarom heb ik de "register_shutdown_function" gebruikt... en DAARIN de outputbuffering... dat werkte wel...

  • Onoffon
  • Registratie: April 2006
  • Laatst online: 22-11 15:59
Firesphere schreef op woensdag 05 maart 2014 @ 20:36:
Waarom wil je beide kanten registreren? Is er een reden dat je denkt dat de response server-side anders is dan client-side?
Het zijn 2 verschillende koppelingen,

Bij de ene koppeling ontvang ik en stuur een response en bij de andere verstuur ik en krijg ik een response. Ondanks dat het wel dezelfde partij is, zijn het verschillende berichten met een verschillend onderwerp.

Bij de koppeling waarbij ik een request krijg en een response terugstuur wil ik graag weten hoe de xml er uit ziet, mocht er iets 'kapot' gaan of gewijzigd worden bij 1 van de partijen dan wil ik dit direct kunnen zien en ook vanaf wanneer.

Just a simple thought....


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-11 13:46

Janoz

Moderator Devschuur®

!litemod

Het loggen kun je veel beter door Apache (of welke webserver je ook maar gebruikt) laten doen. En anders zet je er even een proxy tussen. Dan heb je exact wat er over de lijn gestuurd is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

P.O. Box:
mij lukte het althans niet om de output te bufferen, aan het einde dan weg te schrijven naar de database, en dan de output naar de client door te sturen met een mooie HTTP error (in geval van een fout uiteraard)... kreeg dan altijd 200 - OK terug...
8)7 ok... Apart. Ben benieuwd hoe dat dan intern in elkaar zit, maar dat verdient vast geen schoonheidsprijs.
Janoz:
Het loggen kun je veel beter door Apache (of welke webserver je ook maar gebruikt) laten doen. En anders zet je er even een proxy tussen. Dan heb je exact wat er over de lijn gestuurd is.
Da's nog veel beter inderdaad.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1