SOAP:对于相同的PHP代码,具有相同WSDL函数的2个不同端点的问题

时间:2018-07-01 13:36:49

标签: c# php soap wsdl

在使用SOAP UI应用程序进行测试时,以下2个WSDL可以正常工作。

在调用两个WSDL时使用相同的代码进行测试时,我得到两个不同的输出。

但是我无法弄清楚原因是什么。谁能建议如何解决此问题? WSDL用C#开发。我用于调用的代码是PHP 5.6

我们正在从一台服务器迁移到云服务器。现有服务器端点正常运行。但是在云服务器端点中却没有。

$url = <URL>

 $context = stream_context_create(
              array(
                 'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true,            
                ),
                'http'=>array(
                        'user_agent' => 'PHPSoapClient'
                )
            ));



 $client = new SoapClient($url,
            array(
                'stream_context' => $context,
                'trace' => 1,
                'soap_version'   => SOAP_1_1,
                'style' => SOAP_DOCUMENT,
                'encoding' => SOAP_LITERAL,
                'cache_wsdl' => WSDL_CACHE_NONE,
                'ssl_method ' => 
  array(SOAP_SSL_METHOD_TLS,SOAP_SSL_METHOD_SSLv2,SOAP_SSL_METHOD_SSLv3),                               
            ));            

 var_dump($client);

如果我将URL传递为“ http://www.postaplus.net/APIService/PostaWebClient.svc?wsdl”,则会得到以下对象。

object(SoapClient)[1]
 public 'trace' => int 1
 public '_stream_context' => resource(2, stream-context)
 public '_soap_version' => int 1
 public 'sdl' => resource(8, Unknown)

但是如果我将URL传递为“ http://132.145.10.102:802/APIservice/postawebclient.svc?wsdl”,则会出现以下错误。

( ! ) Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: <message> 'IPostaWebClient_Pickup_Creation_InputMessage' in C:\wamp64\www\soap_project\soap_obj.php on line 30
( ! ) SoapFault: SOAP-ERROR: Parsing WSDL: <message> 'IPostaWebClient_Pickup_Creation_InputMessage' already defined in C:\wamp64\www\soap_project\soap_obj.php on line 30
Call Stack
#   Time    Memory  Function    Location
1   0.0006  243136  {main}( )   ...\soap_obj.php:0
2   0.0007  246904  SoapClient ( )  ...\soap_obj.php:30

1 个答案:

答案 0 :(得分:0)

最后找到2个解决方案。

一个是解决方法,第二个是愚蠢的解决方案。

我将首先解释解决方法。根据以下线程使用 http://...?singlewsdl而非http://...?wsdl

https://social.msdn.microsoft.com/Forums/en-US/db34ca67-cf57-4938-9657-cafd1edc4222/version-9-soap-errors-while-parsing-schema?forum=BingAds

所以“ http://www.postaplus.net/APIService/PostaWebClient.svc?singlewsdl”工作正常。

第二个愚蠢的解决方案是..区分大小写的URL!

将网址从http://132.145.10.102:802/APIservice/postawebclient.svc?wsdl更改为 http://132.145.10.102:802/APIservice/PostaWebClient.svc?wsdl解决了我的问题!