SOAP:相同 PHP 代码的相同 WSDL 函数的 2 个不同端点存在问题

SOAP: issues with 2 different endpoint of the same WSDL function for the same PHP code

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

在调用两个 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

终于找到了2个解决方案。

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

我将首先解释解决方法。根据以下线程使用 http://...?singlewsdl instead of 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!!

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