Isteği göndermeden önce / PHP SoapClient çağrı tarafından oluşturulan XML inceleyin

3 Cevap php

The question: Is there a way to view the XML that would be created with a PHP SoapClient function call BEFORE you actually send the request?

background:

Ben WSDL iletişimi yeni duyuyorum ve bana, PHP, ASP.NET ile yazılmış bir WSDL hizmeti ile iletişim kurmak için bir yol geliştirmek isteyen bir müşterim var. Ben oldukça uzakta aldık, ama karmaşık bir türü geçerken geldiğinde bir sorun haline çalıştırıyorum. Ben şimdiye kadar, farklı bir kaç şey denedim.

1) gibi tek bir dizi ayarlama $params->Person->name $params->Person->address

2) tek bir dizi ayarlama $Person = array('name'=>"joe",'address' = "123");

then passing into the call as a param "Person" => $Person; and a few others. But every time I get the error

SoapException: Server was unable to process request ---> System.Exception: Person is Required. at service name.

In order to further the troubleshooting, I would like to see the XML document that is being sent to see if it is creating a complex type in the way I am expecting it to. I am creating the service using $client = new SoapClient('wsdldoc.asmx?WSDL'); calling it with $client->CreateUser($params); and then trying to see it using the function $client->__getLastRequest(); but it never makes it to the __getLastRequest because it hits a fatal error when calling CreateUser($params).

The question again: Is there any way to view the XML created by the CreateUser($params) call WITHOUT actually sending it and causing a fatal error

3 Cevap

Ben aynı sorun üzerinde çalışırken bu konuyu buldum, ve ben zaten SoapClient () sınıfı genişletilmiş ve çok bunu bozsun istemedim sınıflarını kullanarak çünkü bummed. Eğer sınıf başlatmak zaman "istisnalar" => 0 etiketi eklerseniz (bir istisna baskı olsa) Ancak, bir Ölümcül Hata atmak olmaz:

SoapClient($soapURL,array("trace" => 1,"exceptions"=>0));

Bu beni __ getLastRequest çalıştırın () ve ben gönderiyordu XML analiz için izin Doing.

Ben fonksiyonu geçmek / oluşturmak için bu girişimi başarısız olduğu başlıca nedeni ... oluşturduğunuz ediliyor herhangi bir XML görmek mümkün olacak bir yol olduğuna inanmıyorum.

Emin değil zaten denedim, ama eğer size kullanabilirsiniz fonksiyonuna geçmek için gereken tam olarak ne karar çalışıyor sorun yaşıyorsanız:

$ Client-> __getTypes ();

http://us3.php.net/manual/en/soapclient.gettypes.php

Bu yardımcı olur umarım!