Мне нужна помощь Я оборачиваюсь вокруг этого.
Я имею:
Мне нужно сделать SOAP-запрос, я предполагаю, что WSDL обозначает функцию take in’s.
Мой код следующим образом:
$opts = array(
'ssl' => array(
'ciphers'=>'RC4-SHA',
'verify_peer'=>false,
'verify_peer_name'=>false,
'allow_self_signed' => true
)
);
// SOAP 1.2 client
$params = array (
'encoding' => 'UTF-8',
'verifypeer' => false,
'verifyhost' => false,
'soap_version' => SOAP_1_2,
'trace' => true,
'exceptions' => true,
'connection_timeout' => 1,
"local_cert" => "localpem.pem",
"passphrase" => "somepassword123",
'stream_context' => stream_context_create($opts)
);
$ns_wsse = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
$password_type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
$soap_env = 'http://schemas.xmlsoap.org/soap/envelope/';
$header = new SimpleXMLElement('<Header/>');
$header->registerXPathNamespace('wsse', $ns_wsse);
$soap_root = $header->addChild('header');
$security = $soap_root->addChild('wsse:Security', null, $ns_wsse);
$usernameToken = $security->addChild('wsse:UsernameToken', null, $ns_wsse);
$usernameToken->addChild('wsse:Username', "someUsername", $ns_wsse);
$usernameToken->addChild('wsse:Password', "somepassword123", $ns_wsse)->addAttribute('Type', $password_type);
$auth = $header->xpath('/Header/header')[0]->asXML();
$soap_client = new SoapClient('localwsdlfile.wsdl', $params);
$soap_client->__setSoapHeaders(new SoapHeader($ns_wsse, 'Security', new SoapVar($auth, XSD_ANYXML), true));
$soap_client->__setLocation('https://service-site/services/someservice');
Я использую это, чтобы назвать это.
$tst = $soap_client->getSomeValuesFunc(array('date' => '2000-02-02 2 02:02:02'));
} catch(SoapFault $exception)
{
echo $exception->getMessage(), '<br />', $exception->getTraceAsString();
}
Это сбрасывает меня
Could not connect to host
#0 [internal function]: SoapClient->__doRequest('__call('...
И это «Не удалось подключиться к хосту» — такой широкий способ сказать что-то неправильно, теперь мне интересно, что может решить эту проблему.
Я предполагаю, что я генерирую свою сертификацию неправильно? Так как мне нужно восстановить пароль к нему. Итак, что я сделал, я сохранил форму сертификата crt -> jks, а затем получил jks в файл pem, чтобы он был прикреплен.
Что еще может вызвать ошибки соединения в моем коде?
Задача ещё не решена.
Других решений пока нет …