0

我正在尝试设置一个 PHP SoapClient 以连接到一个 wsdl ...来自服务器的 CURL 和 WGET 工作正常。

如果我尝试使用soapclient,我会收到以下错误消息。

    $wsdl = 'http://pav3.cdyne.com/PavService.svc?wsdl';

try {
    $client = new SoapClient($wsdl, array('trace' => true, 'exceptions' => true));
} catch (SoapFault $f) {
    echo $client->_getLastRequest();
    echo $client->_getLastResponse();
    echo $f->getMessage();
} catch (Exception $e) {
    echo $client->_getLastRequest();
    echo $client->_getLastResponse();
    echo $e->getMessage();
}

我收到错误消息:

<br /><b>Warning</b>:  SoapClient::SoapClient(http://pav3.cdyne.com/PavService.svc?wsdl) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: HTTP request failed!  in <b>/coachflex/www/htdocs/CoachFlex/modules/other/checkAddress.php</b> on line <b>35</b><br />

<br /><b>Warning</b>:  SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: I/O warning : failed to load external entity &quot;http://pav3.cdyne.com/PavService.svc?wsdl&quot; in <b>/coachflex/www/htdocs/CoachFlex/modules/other/checkAddress.php</b> on line <b>35</b><br />

如果我尝试在上述地址上简单地使用 fopen,我会得到:

警告:fopen(http://pav3.cdyne.com/PavService.svc?wsdl)[function.fopen]:未能打开流:HTTP 请求失败!在第37行的/coachflex/www/htdocs/CoachFlex/modules/other/checkAddress.php

我只是想不通为什么我可以通过 curl/wget 连接,但不能通过 PHP。 allow_url_fopen设置为开

4

1 回答 1

2

我解决了我的问题。这实际上是我的防火墙的问题。防火墙会丢弃通过 PHP 发送的数据包,但不会丢弃通过 curl 或 wget 发送的数据包。我为来自该服务器的所有流量添加了一条规则,并增加了丢包长度,现在一切正常!

此页面为我指明了正确的方向:http ://www.radiotope.com/content/safari-and-sonicwall

于 2010-08-16T18:29:06.043 回答