【发布时间】:2015-07-25 06:03:01
【问题描述】:
过去几天我一直在试图弄清楚为什么我的肥皂客户端无法连接,感谢任何帮助。非常简单的问题,我的肥皂客户;
$soapClient = new SoapClient("AXLAPI.wsdl", array('trace'=>true, 'exceptions'=>true,'location'=>"https://ip_address:8443/axl",
'login' => "username",'password'=> "password"));
产生这个非常常见的错误;
Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in /var/www/html/axl_test.php:18 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://ip_address...', 'CUCM:DB ver=8.5...', 1, 0) #1 /var/www/html/axl_test.php(18): SoapClient->__call('getLine', Array) #2 /var/www/html/axl_test.php(18): SoapClient->getLine(Array) #3 {main} thrown in /var/www/html/axl_test.php on line 18
我在另一台服务器上运行完全相同的代码,它运行良好。我很肯定这与 SSL 问题有关,因为wireshark 捕获了多次重传。此外,当我故意将用户名和密码更改为错误时,错误保持不变。因此,它必须在握手期间发生。我可以毫无问题地从soap客户端服务器访问远程服务器并且能够登录。
该错误似乎表明它正在尝试通过 HTTP 进行连接,但我的 URL 专门要求使用 HTTPS。我真的不明白问题出在哪里。
【问题讨论】:
-
这不是 SOAP 错误; "Could not connect to hosts" 表示无法建立 TCP 连接。使用某物。像
curl https://ip_address:8443/...一样检查您是否可以建立与该端口的连接。由于它是一个非标准端口,它很可能被您网络中的某种防火墙阻止了。 -
您在代理服务器或防火墙后面吗?
-
我根本不在任何防火墙后面。
-
helmbert - 当我尝试使用 curl 连接时,它说证书是自签名的,我可以使用 -k 进行不安全的连接。当我这样做时,我得到一个空白输出。但我可以连接到 curl google.com 并能够获取该页面。
-
helmbert - 另外,我应该补充一点,当我从正在运行的服务器运行 curl -k 命令时,我也会得到空白输出。