重新编辑以重新构建新信息。
我正在尝试通过 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 参数时,该函数也可以正常工作。