我已经尝试了所有我无法想到的东西,并希望你能提供帮助.
我从另一个网站开发了一个网站,所以我正在研究现有的代码.
代码可以在我自己的开发服务器(我的Win7机器上的debian VM)上运行,但不能在实时服务器上运行(WHM / cPanel管理员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文件以替换协议后,我复制并重新托管了WDSL文件.
最佳答案 我会用tcpdump记录网络流量:
tcpdump -s65535 -iYOUR_INTERFACE -w soap.pcap
您可以使用wireshark分析流量(soap.pcap).