我在用PHP设置SoapClient时遇到了一些问题。 似乎我遇到的问题是一个相对常见的问题,但我还没有找到合适的解决方案。 我使用以下代码进行连接:
$varIDs = array();
$varIDs[0] = '2147483732';
try{
$client = new SoapClient("../../../../ASP/webservice1.asmx?WSDL");
} catch (Exception $e) {
echo $e . '<br>';
}
我收到下面列出的标准错误,关于无法加载 WSDL 文件。
[07-Aug-2012 12:11:17] PHP Warning: SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: I/O warning : failed to load external entity "../../../../ASP/webservice1.asmx?WSDL" in C:Program Files (x86)Apache Software FoundationApache2.2htdocsphputilsgetISOxml.php on line 7
[07-Aug-2012 12:11:17] PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from '../../../../ASP/webservice1.asmx?WSDL' in C:Program Files (x86)Apache Software FoundationApache2.2htdocsphputilsgetISOxml.php on line 7
我不确定这里的问题是什么。 当我在浏览器中访问 URL 时,我得到了有效的 XML(以前从未使用 WSDL,所以我只是假设它是有效的)。 有什么建议吗?
编辑:根据@Madbreaks的建议,我尝试更改我指向的URL(现在显示为"http://vm0281sch/ATS/webservice2.asmx?WSDL")。 起初我认为它正在工作,因为它需要很长时间才能响应,但我不确定 - 它给了我一个新的错误,但我仍然没有得到任何东西。 我现在得到如下所示的错误:
[07-Aug-2012 16:16:42] PHP Warning: SoapClient::SoapClient(http://vm0281sch/ASP/webservice1.asmx?WSDL) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:Program Files (x86)Apache Software FoundationApache2.2htdocsphputilsgetISOxml.php on line 6
接下来是我之前遇到的错误。 我不确定这里发生了什么,但似乎这个问题实际上与我正在使用的 URL 有关。
您的 URI 无效,错误非常明显 - 找不到资源。 您正在指定文件路径,但您的问题显示您在访问"URL"时获得有效的 XML。 在代码中放置相同的 URL,而不是相对文件路径。
编辑
如果你说的是真的,试试这个:
$client = new SoapClient(dirname(__FILE__)."/../../../../ASP/webservice1.asmx?WSDL");
当你在它的时候,把它放在那一行之前:
error_log('In dir: '.dirname(__FILE__));
编辑
根据您在下面所说的内容,尝试像这样加载 WSDL:
$client = new SoapClient('http://localhost/ASP/webservice1.asmx?WSDL');