微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – SOAP:致命错误..无法连接到主机

我已经尝试了所有我无法想到的东西,并希望你能提供帮助.

我从另一个网站开发了一个网站,所以我正在研究现有的代码.

代码可以在我自己的开发服务器(我的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).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐