4

我已经尝试了我能想到的一切都无济于事,希望你能提供帮助。

我已经从另一个 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 文件以替换协议后复制并重新托管它。

4

1 回答 1

2

我会记录网络流量tcpdump

tcpdump -s65535 -iYOUR_INTERFACE -w soap.pcap 

您可以使用 分析流量 ( soap.pcap) wireshark

于 2013-07-28T07:21:18.950 回答