Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2013-04-08 Thread php dot net at exby dot com
Edit report at https://bugs.php.net/bug.php?id=49169edit=1

 ID: 49169
 Comment by: php dot net at exby dot com
 Reported by:jeroen at asystance dot nl
 Summary:SoapServer calls wrong function, although SOAP
 action header is correct
 Status: Verified
 Type:   Bug
 Package:SOAP related
 Operating System:   linux
 PHP Version:5.3.3
 Block user comment: N
 Private report: N

 New Comment:

I still can't believe this is not fixed. Can we get someone from php.net to 
respond to this - whether or not there is any intention to fix this?? I really 
don't want to use JAVA for setting up services 
but so far PHP's inability to correctly understand the soapaction header is 
forcing me in this direction.

And no, I can't switch to rpc/encoded and it's not a 'fix'. Document Literal is 
by far the more used paradigm outside of the PHP world - and web services are 
often implemented in the Enterprise space.

Please, somebody fix this.


Previous Comments:

[2013-02-24 20:05:03] reto at casserini dot com

Another workaround. 

Instead of

message name=getCourses
part name=parameters type=xsd:int/
/message
message name=getUsers
part name=parameters type=xsd:int/
/message

which always leads to a call of the first operation getCourses, I define two 
new types:

xsd:element name=getCoursesInput type=xsd:int/
xsd:element name=getUsersInput type=xsd:int/

and use them for the messages:

message name=getCourses
part name=parameters element=tns:getCoursesInput/
/message
message name=getUsers
part name=parameters element=tns:getUsersInput/
/message

works fine for me.


[2012-10-12 19:30:12] mrice at canarylabs dot com

This bug appears to still be present in 5.3.6.

I need help on how to use the workaround of: “Actually I circumvented the 
problem, by putting all the message definitions in separate files, which I then 
include in the schema-part of the wsdl.
Then PHP can handle the soap:binding style=document just fine, so the problem 
only occurs if the names are duplicated within the same file.”

We are recreating a web service from an already existing one and existing 
clients need to work.

How do you include the message definitions in separate files as stated above?


[2011-02-11 12:28:25] jeroen at asystance dot nl

Just wanted to verify this bug is still present in 5.3.3


[2010-09-08 14:04:08] rkm at nykredit dot dk

Well, maybe the RPC-protocol will work, but where I work, it is mandatory to 
create services using style=document, and it really isn't to the advantage of 
PHP to tell the servicepeople in the Java dept. that we can't handle document 
styles.

Actually I circumvented the problem, by putting all the message definitions in 
separate files, which I then include in the schema-part of the wsdl.
Then PHP can handle the soap:binding style=document just fine, so the problem 
only occurs if the names are duplicated within the same file.


[2010-09-08 13:54:12] hoffmeister dot c at gmx dot de

This is no bug. I guess you used style=document in the wsdl file operation 
description. In this case there is no operation name passed from the client to 
the server. Try style=rpc (remote procedure call) instead. That works pretty 
well.




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

https://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49169edit=1


Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2013-02-24 Thread reto at casserini dot com
Edit report at https://bugs.php.net/bug.php?id=49169edit=1

 ID: 49169
 Comment by: reto at casserini dot com
 Reported by:jeroen at asystance dot nl
 Summary:SoapServer calls wrong function, although SOAP
 action header is correct
 Status: Verified
 Type:   Bug
 Package:SOAP related
 Operating System:   linux
 PHP Version:5.3.3
 Block user comment: N
 Private report: N

 New Comment:

Another workaround. 

Instead of

message name=getCourses
part name=parameters type=xsd:int/
/message
message name=getUsers
part name=parameters type=xsd:int/
/message

which always leads to a call of the first operation getCourses, I define two 
new types:

xsd:element name=getCoursesInput type=xsd:int/
xsd:element name=getUsersInput type=xsd:int/

and use them for the messages:

message name=getCourses
part name=parameters element=tns:getCoursesInput/
/message
message name=getUsers
part name=parameters element=tns:getUsersInput/
/message

works fine for me.


Previous Comments:

[2012-10-12 19:30:12] mrice at canarylabs dot com

This bug appears to still be present in 5.3.6.

I need help on how to use the workaround of: “Actually I circumvented the 
problem, by putting all the message definitions in separate files, which I then 
include in the schema-part of the wsdl.
Then PHP can handle the soap:binding style=document just fine, so the problem 
only occurs if the names are duplicated within the same file.”

We are recreating a web service from an already existing one and existing 
clients need to work.

How do you include the message definitions in separate files as stated above?


[2011-02-11 12:28:25] jeroen at asystance dot nl

Just wanted to verify this bug is still present in 5.3.3


[2010-09-08 14:04:08] rkm at nykredit dot dk

Well, maybe the RPC-protocol will work, but where I work, it is mandatory to 
create services using style=document, and it really isn't to the advantage of 
PHP to tell the servicepeople in the Java dept. that we can't handle document 
styles.

Actually I circumvented the problem, by putting all the message definitions in 
separate files, which I then include in the schema-part of the wsdl.
Then PHP can handle the soap:binding style=document just fine, so the problem 
only occurs if the names are duplicated within the same file.


[2010-09-08 13:54:12] hoffmeister dot c at gmx dot de

This is no bug. I guess you used style=document in the wsdl file operation 
description. In this case there is no operation name passed from the client to 
the server. Try style=rpc (remote procedure call) instead. That works pretty 
well.


[2010-03-30 12:19:42] rkm at nykredit dot dk

Adding to the above comment - If first SoapServer fails to read your WSDL 
properly, it will end up calling all known methods of the object added to 
SoapServer.
- By known I mean, that if the .wsdl describes *another* binding to *another* 
method, than the one called - The other method gets called as well, and the 
result added to the SOAP-ENV:Header tag in the return.




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

https://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49169edit=1


Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2012-10-12 Thread mrice at canarylabs dot com
Edit report at https://bugs.php.net/bug.php?id=49169edit=1

 ID: 49169
 Comment by: mrice at canarylabs dot com
 Reported by:jeroen at asystance dot nl
 Summary:SoapServer calls wrong function, although SOAP
 action header is correct
 Status: Verified
 Type:   Bug
 Package:SOAP related
 Operating System:   linux
 PHP Version:5.3.3
 Block user comment: N
 Private report: N

 New Comment:

This bug appears to still be present in 5.3.6.

I need help on how to use the workaround of: “Actually I circumvented the 
problem, by putting all the message definitions in separate files, which I then 
include in the schema-part of the wsdl.
Then PHP can handle the soap:binding style=document just fine, so the problem 
only occurs if the names are duplicated within the same file.”

We are recreating a web service from an already existing one and existing 
clients need to work.

How do you include the message definitions in separate files as stated above?


Previous Comments:

[2011-02-11 12:28:25] jeroen at asystance dot nl

Just wanted to verify this bug is still present in 5.3.3


[2010-09-08 14:04:08] rkm at nykredit dot dk

Well, maybe the RPC-protocol will work, but where I work, it is mandatory to 
create services using style=document, and it really isn't to the advantage of 
PHP to tell the servicepeople in the Java dept. that we can't handle document 
styles.

Actually I circumvented the problem, by putting all the message definitions in 
separate files, which I then include in the schema-part of the wsdl.
Then PHP can handle the soap:binding style=document just fine, so the problem 
only occurs if the names are duplicated within the same file.


[2010-09-08 13:54:12] hoffmeister dot c at gmx dot de

This is no bug. I guess you used style=document in the wsdl file operation 
description. In this case there is no operation name passed from the client to 
the server. Try style=rpc (remote procedure call) instead. That works pretty 
well.


[2010-03-30 12:19:42] rkm at nykredit dot dk

Adding to the above comment - If first SoapServer fails to read your WSDL 
properly, it will end up calling all known methods of the object added to 
SoapServer.
- By known I mean, that if the .wsdl describes *another* binding to *another* 
method, than the one called - The other method gets called as well, and the 
result added to the SOAP-ENV:Header tag in the return.


[2010-03-30 11:03:12] rkm at nykredit dot dk

It's not even enough to change the message name (I didn't get that from the 
initial comments) - One needs to change the element of the part.

Thus
wsdl:message name=getByIdRequest
  wsdl:part name=parameters element=tmp:ClientId/
/wsdl:message

Will not work with (reusing tmp:ClientId):
wsdl:message name=getByIdRequest2
  wsdl:part name=parameters element=tmp:ClientId/
/wsdl:message

You'll have to create a new element, wich makes it hard to use i a corporate 
environment, where you have to use standard elemnts - Thus this is not a valid 
option, even though it works:
wsdl:message name=getByIdRequest2
  wsdl:part name=parameters element=tmp:ClientId_Clone/
/wsdl:message

This bug has been here for a while, any movement against a solution?

So far I have to create a WSDL for each operation, which is not very PHP-smooth!




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

https://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49169edit=1


Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2010-09-08 Thread hoffmeister dot c at gmx dot de
Edit report at http://bugs.php.net/bug.php?id=49169edit=1

 ID: 49169
 Comment by: hoffmeister dot c at gmx dot de
 Reported by:jeroen at asystance dot nl
 Summary:SoapServer calls wrong function, although SOAP
 action header is correct
 Status: Verified
 Type:   Bug
 Package:SOAP related
 Operating System:   linux
 PHP Version:5.2SVN-2009-08-05 (snap)
 Block user comment: N

 New Comment:

This is no bug. I guess you used style=document in the wsdl file
operation description. In this case there is no operation name passed
from the client to the server. Try style=rpc (remote procedure call)
instead. That works pretty well.


Previous Comments:

[2010-03-30 12:19:42] rkm at nykredit dot dk

Adding to the above comment - If first SoapServer fails to read your
WSDL properly, it will end up calling all known methods of the object
added to SoapServer.

- By known I mean, that if the .wsdl describes *another* binding to
*another* method, than the one called - The other method gets called as
well, and the result added to the SOAP-ENV:Header tag in the return.


[2010-03-30 11:03:12] rkm at nykredit dot dk

It's not even enough to change the message name (I didn't get that from
the initial comments) - One needs to change the element of the part.



Thus

wsdl:message name=getByIdRequest

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



Will not work with (reusing tmp:ClientId):

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



You'll have to create a new element, wich makes it hard to use i a
corporate environment, where you have to use standard elemnts - Thus
this is not a valid option, even though it works:

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId_Clone/

/wsdl:message



This bug has been here for a while, any movement against a solution?



So far I have to create a WSDL for each operation, which is not very
PHP-smooth!


[2009-11-04 17:08:04] spyowl at gmail dot com

Confirmed on 5.3.1RC3 using WSDL.



The problem seems to be the matching first argument name between methods
(not the whole signature) - as long as 2 or more methods have the same
name for the first argument the SoapServer will always execute the first
method listed, regardless of soapAction, and even if there are
additional arguments for those methods that are different from each
other.



This is a pretty serious bug.


[2009-09-30 06:58:28] wee at xbe dot ch

this bug is really annoying.. the forced use of rpc (the workaround)
is not a serious fix.



we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that
business ready, but that too has it's issues (has problems when it comes
to generate complex wsdl and with complex type handling on the php
side). and it segfaults with an activated zend optimizer+ ;-)



anyway, i just comment to give more importance to this bug.


[2009-09-23 14:51:48] robin dot harvey at chaptereight dot com

@bigdan at gmail dot com



The workaround I'm using is to set up my WSDL so that all methods have a
unique input type signature.  Of course this leads to an ugly and
unnecessarily bloated WSDL, but there's not much other choice (other
than WS02 PHP, that is)




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

http://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=49169edit=1


Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2010-09-08 Thread rkm at nykredit dot dk
Edit report at http://bugs.php.net/bug.php?id=49169edit=1

 ID: 49169
 Comment by: rkm at nykredit dot dk
 Reported by:jeroen at asystance dot nl
 Summary:SoapServer calls wrong function, although SOAP
 action header is correct
 Status: Verified
 Type:   Bug
 Package:SOAP related
 Operating System:   linux
 PHP Version:5.2SVN-2009-08-05 (snap)
 Block user comment: N

 New Comment:

Well, maybe the RPC-protocol will work, but where I work, it is
mandatory to create services using style=document, and it really isn't
to the advantage of PHP to tell the servicepeople in the Java dept. that
we can't handle document styles.



Actually I circumvented the problem, by putting all the message
definitions in separate files, which I then include in the schema-part
of the wsdl.

Then PHP can handle the soap:binding style=document just fine, so the
problem only occurs if the names are duplicated within the same file.


Previous Comments:

[2010-09-08 13:54:12] hoffmeister dot c at gmx dot de

This is no bug. I guess you used style=document in the wsdl file
operation description. In this case there is no operation name passed
from the client to the server. Try style=rpc (remote procedure call)
instead. That works pretty well.


[2010-03-30 12:19:42] rkm at nykredit dot dk

Adding to the above comment - If first SoapServer fails to read your
WSDL properly, it will end up calling all known methods of the object
added to SoapServer.

- By known I mean, that if the .wsdl describes *another* binding to
*another* method, than the one called - The other method gets called as
well, and the result added to the SOAP-ENV:Header tag in the return.


[2010-03-30 11:03:12] rkm at nykredit dot dk

It's not even enough to change the message name (I didn't get that from
the initial comments) - One needs to change the element of the part.



Thus

wsdl:message name=getByIdRequest

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



Will not work with (reusing tmp:ClientId):

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



You'll have to create a new element, wich makes it hard to use i a
corporate environment, where you have to use standard elemnts - Thus
this is not a valid option, even though it works:

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId_Clone/

/wsdl:message



This bug has been here for a while, any movement against a solution?



So far I have to create a WSDL for each operation, which is not very
PHP-smooth!


[2009-11-04 17:08:04] spyowl at gmail dot com

Confirmed on 5.3.1RC3 using WSDL.



The problem seems to be the matching first argument name between methods
(not the whole signature) - as long as 2 or more methods have the same
name for the first argument the SoapServer will always execute the first
method listed, regardless of soapAction, and even if there are
additional arguments for those methods that are different from each
other.



This is a pretty serious bug.


[2009-09-30 06:58:28] wee at xbe dot ch

this bug is really annoying.. the forced use of rpc (the workaround)
is not a serious fix.



we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that
business ready, but that too has it's issues (has problems when it comes
to generate complex wsdl and with complex type handling on the php
side). and it segfaults with an activated zend optimizer+ ;-)



anyway, i just comment to give more importance to this bug.




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

http://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=49169edit=1


Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2010-03-30 Thread rkm at nykredit dot dk
Edit report at http://bugs.php.net/bug.php?id=49169edit=1

 ID:   49169
 Comment by:   rkm at nykredit dot dk
 Reported by:  jeroen at asystance dot nl
 Summary:  SoapServer calls wrong function, although SOAP
   action header is correct
 Status:   Verified
 Type: Bug
 Package:  SOAP related
 Operating System: linux
 PHP Version:  5.2SVN-2009-08-05 (snap)

 New Comment:

Adding to the above comment - If first SoapServer fails to read your
WSDL properly, it will end up calling all known methods of the object
added to SoapServer.

- By known I mean, that if the .wsdl describes *another* binding to
*another* method, than the one called - The other method gets called as
well, and the result added to the SOAP-ENV:Header tag in the return.


Previous Comments:

[2010-03-30 11:03:12] rkm at nykredit dot dk

It's not even enough to change the message name (I didn't get that from
the initial comments) - One needs to change the element of the part.



Thus

wsdl:message name=getByIdRequest

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



Will not work with (reusing tmp:ClientId):

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



You'll have to create a new element, wich makes it hard to use i a
corporate environment, where you have to use standard elemnts - Thus
this is not a valid option, even though it works:

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId_Clone/

/wsdl:message



This bug has been here for a while, any movement against a solution?



So far I have to create a WSDL for each operation, which is not very
PHP-smooth!


[2009-11-04 17:08:04] spyowl at gmail dot com

Confirmed on 5.3.1RC3 using WSDL.



The problem seems to be the matching first argument name between methods
(not the whole signature) - as long as 2 or more methods have the same
name for the first argument the SoapServer will always execute the first
method listed, regardless of soapAction, and even if there are
additional arguments for those methods that are different from each
other.



This is a pretty serious bug.


[2009-09-30 06:58:28] wee at xbe dot ch

this bug is really annoying.. the forced use of rpc (the workaround)
is not a serious fix.



we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that
business ready, but that too has it's issues (has problems when it comes
to generate complex wsdl and with complex type handling on the php
side). and it segfaults with an activated zend optimizer+ ;-)



anyway, i just comment to give more importance to this bug.


[2009-09-23 14:51:48] robin dot harvey at chaptereight dot com

@bigdan at gmail dot com



The workaround I'm using is to set up my WSDL so that all methods have a
unique input type signature.  Of course this leads to an ugly and
unnecessarily bloated WSDL, but there's not much other choice (other
than WS02 PHP, that is)


[2009-09-18 14:10:39] jeroen at asystance dot nl

bigdan, I think you left out one option: this _is_ a bug.



Using RPC style _is_ a workaround, but one that doesn't always work.



The real problem is that SOAP should use the SOAPAction header to
determine which operation to call, not guess based on parameters (which
is what it looks to be doing now).



While the comment you refer to does point out this very issue and
predates this bug, that doesn't mean it's not a bug. Rather the
commenter could (and should?) have filed this as a bug more than a year
ago.




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

http://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=49169edit=1


Bug #49169 [Com]: SoapServer calls wrong function, although SOAP action header is correct

2010-03-30 Thread rkm at nykredit dot dk
Edit report at http://bugs.php.net/bug.php?id=49169edit=1

 ID:   49169
 Comment by:   rkm at nykredit dot dk
 Reported by:  jeroen at asystance dot nl
 Summary:  SoapServer calls wrong function, although SOAP
   action header is correct
 Status:   Verified
 Type: Bug
 Package:  SOAP related
 Operating System: linux
 PHP Version:  5.2SVN-2009-08-05 (snap)

 New Comment:

It's not even enough to change the message name (I didn't get that from
the initial comments) - One needs to change the element of the part.



Thus

wsdl:message name=getByIdRequest

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



Will not work with (reusing tmp:ClientId):

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId/

/wsdl:message



You'll have to create a new element, wich makes it hard to use i a
corporate environment, where you have to use standard elemnts - Thus
this is not a valid option, even though it works:

wsdl:message name=getByIdRequest2

  wsdl:part name=parameters element=tmp:ClientId_Clone/

/wsdl:message



This bug has been here for a while, any movement against a solution?



So far I have to create a WSDL for each operation, which is not very
PHP-smooth!


Previous Comments:

[2009-11-04 17:08:04] spyowl at gmail dot com

Confirmed on 5.3.1RC3 using WSDL.



The problem seems to be the matching first argument name between methods
(not the whole signature) - as long as 2 or more methods have the same
name for the first argument the SoapServer will always execute the first
method listed, regardless of soapAction, and even if there are
additional arguments for those methods that are different from each
other.



This is a pretty serious bug.


[2009-09-30 06:58:28] wee at xbe dot ch

this bug is really annoying.. the forced use of rpc (the workaround)
is not a serious fix.



we also evaluated wso2 (wsf_php) as the php soapserver simply isn't that
business ready, but that too has it's issues (has problems when it comes
to generate complex wsdl and with complex type handling on the php
side). and it segfaults with an activated zend optimizer+ ;-)



anyway, i just comment to give more importance to this bug.


[2009-09-23 14:51:48] robin dot harvey at chaptereight dot com

@bigdan at gmail dot com



The workaround I'm using is to set up my WSDL so that all methods have a
unique input type signature.  Of course this leads to an ugly and
unnecessarily bloated WSDL, but there's not much other choice (other
than WS02 PHP, that is)


[2009-09-18 14:10:39] jeroen at asystance dot nl

bigdan, I think you left out one option: this _is_ a bug.



Using RPC style _is_ a workaround, but one that doesn't always work.



The real problem is that SOAP should use the SOAPAction header to
determine which operation to call, not guess based on parameters (which
is what it looks to be doing now).



While the comment you refer to does point out this very issue and
predates this bug, that doesn't mean it's not a bug. Rather the
commenter could (and should?) have filed this as a bug more than a year
ago.


[2009-09-18 13:51:18] bigdan at gmail dot com

Nevermind on the workaround - either this is not a bug, this issue was
noticed well before this bug, or the comments here are entirely
unrelated though they correct the issue for me:



http://us3.php.net/manual/en/soapserver.handle.php#81750



TLDR: Instead of soap:binding style=document you need to use
soap:binding style=rpc




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

http://bugs.php.net/bug.php?id=49169


-- 
Edit this bug report at http://bugs.php.net/bug.php?id=49169edit=1