我已经尝试了所有我无法想到的东西,并希望你能提供帮助。
我从其他网络开发者那里上了一个网站,所以正在处理现有的代码。
代码适用于我自己的开发服务器(我的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文件。
答案 0 :(得分:2)
我会使用tcpdump
记录网络流量:
tcpdump -s65535 -iYOUR_INTERFACE -w soap.pcap
您可以使用soap.pcap
分析流量(wireshark
)。