Задать вопрос
@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" процессы запускает.
  • Вопрос задан
  • 4350 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
alsopub
@alsopub
Посмотрите первый ответ тут - PHP проблема с запросом к SOAP сервису - кажется ваш случай, когда надо указать друго путь для запросов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы