2015-05-13 4 views
2

Я провел последние пару дней, пытаясь понять, почему мой клиент-мыльница не может подключиться, любая помощь приветствуется. Очень простая проблема, мой клитор для мыла;Подключение к https с soapClient

$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, потому что wirehark захватывает несколько повторных передач. Кроме того, когда я целенаправленно изменяю имя пользователя и пароль на что-то ложное, ошибка остается прежней. Таким образом, это должно происходить во время рукопожатия. Я могу без проблем получить доступ к удаленному серверу с сервера клиента soap.

Ошибка, похоже, показывает, что она пытается подключиться через HTTP, но мой URL-адрес специально требует использования HTTPS. Я действительно не понимаю, где проблема.

+1

Это не ошибка SOAP; * «Не удалось подключиться к хостам» * означает, что TCP-соединение не может быть установлено. Используйте sth. например 'curl https: // ip_address: 8443/...', чтобы проверить, можно ли вообще установить соединение с этим портом. Поскольку это нестандартный порт, вероятность того, что он заблокирован каким-то брандмауэром в вашей сети. – helmbert

+1

Вы за прокси-сервером или брандмауэром? –

+0

Я вообще не за штурвалом. – Kimomaru

ответ

0

После нескольких дней работы над этой проблемой я решил проблему. Некоторые из ответов здесь были правильными, возникла проблема с самозаверяющим сертификатом (поэтому клиенту Soap нужно не заботиться), но другой проблемой был сам URL. По какой-то причине установка IP-адреса не сработала, используя полное доменное имя. Таким образом, полный код выглядит так:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', True); 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<link rel="stylesheet" type="text/css" href="style1.css"> 
<title>AXL Test</title> 

<?php 

$context = stream_context_create(array('ssl' => array('verify_peer' => false, 'allow_self_signed' => true))); 

$soapClient = new SoapClient("AXLAPI.wsdl", array('stream_context' => $context, 'trace'=>true, 'exceptions'=>true,'location'=>"https://hostname.domain.name:8443/axl",'login' => "username",'password'=> "password")); 
$response = $soapClient->getLine(array("routePartitionName"=>"partitionName", "pattern"=>"pattern")); 
echo "<TR><TD class='body'>" . $response->return->line->description . "</TD><TD class='body'>"; 

?> 

Этот вопрос был особенно досадно, потому что я использовал проверенные и истинный код с другого сервера, на котором самозаверяющие ceritificats и FQDN, не имеет значения. Теперь это произошло, и я не знаю, почему. В любом случае, я получил его работу. Спасибо всем, кто предоставил отзывы, я надеюсь, что это поможет другим.

Смежные вопросы