PHP无法使用SoapClient或file_get_contents访问WSDL文件

时间:2014-09-30 11:25:14

标签: php soap wsdl firewall windows-firewall-api

重新编辑以重新构建新信息。

我正在尝试通过PHP访问SOAP API。使用API​​的应用程序托管在我的公司网络上,WS在端口8080上公开。

我可以在我的浏览器中访问http://network-machine.local:8080/service?wsdl上的WSDL文件(加载速度非常快)。但是,以下几段代码只会导致超出最大执行时间的致命错误:

new SoapClient('http://network-machine.local:8080/service?wsdl');

file_get_contents('http://network-machine.local:8080/service?wsdl');

PHP可以访问其他远程服务(包括WSDL)。

如果我将wsdl文件(及其导入的文件)保存到本地计算机并更新引用,PHP可以很好地访问API服务。它只是无法引入WSDL。

所以,我认为这是某种网络/防火墙问题。有什么想法吗?

使用更多信息进行修改:

cURL工作正常。使用cURL,我可以获得WSDL文件的总大小。当我使用该大小作为file_get_contents的MAXLENGTH参数时,该函数也可以正常工作。

1 个答案:

答案 0 :(得分:-1)

这段代码让我能够阅读本地wsdl文件:

$service = new SoapClient( 
  dirname(__FILE__) .'/mywsdlfile.wsdl', 
  array( 
    "trace" => true, 
    "exceptions" => false) 
  );