我已经尝试了我能想到的一切都无济于事,希望你能提供帮助。
我已经从另一个 Web 开发人员那里获取了一个站点,因此正在处理现有代码。
该代码适用于我自己的开发服务器(我的 Win7 机器上的 debian VM),但不适用于实时服务器(WHM/cPanel admin'd REDHAT Enterprise 5.4 x86_64 标准)。
调用后出现以下错误$BHclient->startSession
:
Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in /home/aap3r/public_html/soap_test.php:60
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://api.bul...', '', 1, 0)
#1 /home/aap3r/public_html/soap_test.php(60): SoapClient->__call('startSession', Array)
#2 /home/aap3r/public_html/soap_test.php(60): SoapClient->startSession(Object(stdClass))
#3 {main}
thrown in /home/aap3r/public_html/soap_test.php on line 60
WDSL 文件可以正常下载(尽管它似乎具有错误的 mime 类型)。
由于完全相同的测试代码在一台服务器上有效,但在另一台服务器上无效,我认为这是防火墙问题,但主机否认了这一点。
相关代码:
$url = "http://api.bullhornstaffing.com/webservices-2.0/?wsdl";
ini_set('soap.wsdl_cache_enabled',1);
ini_set('soap.wsdl_cache_ttl',1);
$username = "xxx";
$password = "xxx";
$apiKey = "xxxx";
$session_request = new stdClass();
$session_request->username = $username;
$session_request->password = $password;
$session_request->apiKey = $apiKey;
$BHclient = new SoapClient($url, array("trace" => true, "exception" => false));
$API_session = $BHclient->startSession($session_request);
print_r($API_session);
phpinfo
确认已安装 SOAP,并且我尝试了控制面板中提供的各种实现/安装方法。
我已经更新到 PHP 版本 5.3.27 和 Apache 到 2.2.25。
任何帮助将不胜感激。
更新:我找到了解决方法。由于某种原因,生产服务器无法连接到 HTTP*S*,所以我在手动编辑 WDSL 文件以替换协议后复制并重新托管它。