在使用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
答案 0 :(得分:0)
最后找到2个解决方案。
一个是解决方法,第二个是愚蠢的解决方案。
我将首先解释解决方法。根据以下线程使用 http://...?singlewsdl而非http://...?wsdl
所以“ 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解决了我的问题!