ID: 38665 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Assigned Bug Type: SOAP related Operating System: WinXP PHP Version: 5.1.6 Assigned To: dmitry
Previous Comments: ------------------------------------------------------------------------ [2006-09-09 04:18:51] [EMAIL PROTECTED] ok, that works. Now, I set the SOAP_WAIT_ONE_WAY_CALLS into the client and check the server now : the test.txt contains : Call Constructor Call Method 2 VAL Call Method 1 and should contain : Call Method 1 VAL at the end... test.server.php: http://paste.uni.cc/9943 test.client.php http://paste.uni.cc/9944 test.wsdl http://paste.uni.cc/9945 ------------------------------------------------------------------------ [2006-08-31 11:01:31] [EMAIL PROTECTED] In your examle "getTest1" is one way operation, by default ext/soap doesn't wait response from such operations. It just send request and forget about it. As result client doesn't recives session id cookie and cannot establish session. As workaround you can wait for one way operation. To do this you should use "feature" option in SoapClient constructor. $clientSOAP = new SoapClient('test.wsdl', array("features"=>SOAP_WAIT_ONE_WAY_CALLS)); As another workaround you can use two way operation first. ------------------------------------------------------------------------ [2006-08-31 08:26:38] [EMAIL PROTECTED] Assigned to the maintainer. ------------------------------------------------------------------------ [2006-08-31 07:59:41] [EMAIL PROTECTED] Description: ------------ I found a weird bug with SOAP/WSDL. When calling a method which returns nothing (no output) at first time, the second method will call the constructor of the class again even if we are using the Persistence with SESSION. Here 3 files: - test.wsdl - test.server.php - test.client.php You have to change the url at the end of the test.wsdl to test this script In the WSDL, the method "getTest1" returns nothing and "getTest2" returns a string. If you run the script test.client.php now, you will get a file test.txt containing : Call Constructor Call Method 2 Call Method 1 Now, swap the rows var_dump($clientSOAP->getTest2()); var_dump($clientSOAP->getTest1()); and now the test.txt contains : Call Constructor Call Method 1 Call Constructor Call Method 2 Reproduce code: --------------- test.server.php http://pastebin.com/780399 test.client.php http://pastebin.com/780404 test.wsdl http://pastebin.com/780402 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38665&edit=1