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

Reply via email to