Задать вопрос
@Emprove

PHP SOAP WSDL could not connect to host ошибка?

Добрый день! Очень нужна ваша помощь.
Проблема следующая...
Есть 213.132.76.210:5222/Modules/EleWise.ELMA.Workflow....
если пройти в низ xml документа, то увидим, что адрес веб-сервиса немного отличается портом (не 5222, а 222) - я думаю в этом проблема ошибки "could not connect to host". Т.е. хмл отдает сервер нормально, а запрос СОАП не принимает.
хост: Apache/2.4.10 (Unix), SERVER_PROTOCOL HTTP/1.1, PHP Version 5.6.23, SOAP client и server на хосте включены

1) soapUI немного пользовал, но ошибка такая же - не отдает ответ сервер на запрос xml.
2) сам сервак имеет локальный ИП с портом 222, сделан проброс с внешнего IP 213.132.76.210:5222 на внутренний 192.168.*.*:222

2) пробовал:
$opts = array(
    'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false)
);
$params = array ('encoding' => 'UTF-8', 'verifypeer' => false, 'verifyhost' => false, 'soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1, "connection_timeout" => 10, 'stream_context' => stream_context_create($opts) );


3) пробовал

'soap_version' => SOAP_1_1,

4) пробовал
ini_set('soap.wsdl_cache_enabled', '0');
ini_set('soap.wsdl_cache_ttl', '0');


Весь код:
<?php
error_reporting(E_ALL);
$userName = "user"; //логин пользователя от которого будет запущен процесс
$password ="9512364"; //пароль пользователя от которого будет запущен процесс
$token = "***"; //токен процесса
$instanceName = "Обращения с сайта"; //название экземпляра процесса
$data = new stdClass();
$data->Items = new stdClass();
$data->Items->WebDataItem = array(); // Формируем массив контекстных переменных.
$data->Items->WebDataItem[0] = "stroka"; // из ПОСТ будем потом брать
$data->Items->WebDataItem[1] = "stroka2"; // из ПОСТ будем потом брать
$opts = array(
    'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false)
);
$params = array ('encoding' => 'UTF-8', 'verifypeer' => false, 'verifyhost' => false, 'soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1, "connection_timeout" => 10, 'stream_context' => stream_context_create($opts) );
ini_set('soap.wsdl_cache_enabled', '0');
ini_set('soap.wsdl_cache_ttl', '0');
try {
$urlWsdl = "http://213.132.76.210:5222/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx?WSDL";
$client = new SoapClient($urlWsdl, $params);
$parameters = array(
                "userName"=>$userName,
                "password"=>$password,
                "token"=>$token,
                "instanceName"=>$instanceName,
                "data"=>$data);
$request = $client->Run($parameters); // делаем запрос, здесь Run это название функции в wsdl сервисе
$itog = $request->RunResult; // получаем запрос и присваиваем его переменной itog. Result это название поля которое отдаст wsdl
}
catch (SoapFault $exception)
{
echo $exception->getMessage(); // ошибка если не ок
}
?>


Также пробовал setLocation или задавать параметр SoapClient, array( "location" => URL с портом 222.

Запросы с внутреннего IP с АТСки проходят и CRM "ELMA" процессы запускает.
  • Вопрос задан
  • 4418 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
alsopub
@alsopub
Посмотрите первый ответ тут - PHP проблема с запросом к SOAP сервису - кажется ваш случай, когда надо указать друго путь для запросов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽