Добрый день! Очень нужна ваша помощь.
Проблема следующая...
Есть
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" процессы запускает.