ID: 50698 User updated by: zippy1981 at gmail dot com Reported By: zippy1981 at gmail dot com -Status: Feedback +Status: Open Bug Type: Feature/Change Request Operating System: Windows XP/7 and probably all. PHP Version: 5.2.12, 5.3.1 New Comment:
It seems I was not clear in my original ticket. My soap service has two end points. One is http (soap 1.1). The other is nettcp, microsoft private protocol. PHP throws an error when I parse the WSDL simply because it contains an endpoint it can't connect to. This is in spite of the following four facts: 1) There is a http endpoint it knows how to connect to in the WSDL 2) I override the WSDL endpoints in the soap constructor. 3) A soap client only needs to connect to one endpoint in a WSDL to communicate with it If I manually edit the WSDL so that the nettcp endpoint is no longer advertised, but it still exists, PHP will connect to it fine. Previous Comments: ------------------------------------------------------------------------ [2010-01-13 14:41:18] srina...@php.net as far as I understand, Microsoft TCP transport spec is a private interface for communicating between .Net server/clients. I would expect that you will need SOAP/TCP as end point for communicating between php client and .Net server. Af course,my knowledge might be outdated on this. ------------------------------------------------------------------------ [2010-01-12 21:49:27] zippy1981 at gmail dot com Verified on Windows 7 as well. ------------------------------------------------------------------------ [2010-01-10 22:10:39] zippy1981 at gmail dot com Also verified to break on 5.3.1. ------------------------------------------------------------------------ [2010-01-08 21:52:35] zippy1981 at gmail dot com I also reported this on stack overflow. If anyone has any suggestions for workarounds, especially if there workaround on the .NET side feel free to post them there. http://stackoverflow.com/questions/1933213/connecting-to-a-wcf-service- in-php-that-has-a-a-nettcp-binding-and-a-basichttpbin ------------------------------------------------------------------------ [2010-01-08 21:19:44] zippy1981 at gmail dot com Description: ------------ I have a WCF web service written in .NET that has different endpoints. I want .NET clients to be able to talk to it using nettcp (a propietary microsoft protocol) and PHP to be able to talk to it using basicHttp (soap 1.1). However, if WSDL contains any endpoints other than http or https endpoints I get the following error: PHP Fatal error: SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://schemas.microsoft.com/soap/tcp' I think the following should occur: If no endpoint is explicitly specified in the constructor, PHP should pick the first compatible endpoint available in the wsdl and use it. If the endpoint is explicitly declared in the constructor, then PHP should not care about the available endpoints. Reproduce code: --------------- <?php // .NET Service that this calls exists at http://github.com/zippy1981/EchoService $client = new SoapClient ('http://localhost:8731/EchoService/?wsdl', array( 'location' => 'http://localhost:8731/EchoService/Basic', 'trace' => true, 'soap_version' => SOAP_1_1, 'connection_timeout' => 5 ) ); echo $client->echo(array('request' => "Hello World"))->EchoResult; ?> Expected result: ---------------- c:\php\php.exe EchoClient.php Hello World Actual result: -------------- PHP Fatal error: SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://schemas.microsoft.com/soap/tcp' ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50698&edit=1