SOAP WSDL解析错误

时间:2012-08-07 20:21:22

标签: php soap soap-client

我在使用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 &quot;../../../../ASP/webservice1.asmx?WSDL&quot; in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\php\utils\getISOxml.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 Foundation\Apache2.2\htdocs\php\utils\getISOxml.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 Foundation\Apache2.2\htdocs\php\utils\getISOxml.php on line 6

接下来是我之前遇到的错误。我不确定这里发生了什么,但似乎问题实际上与我正在使用的URL有关。

1 个答案:

答案 0 :(得分:0)

您的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');