Это привело меня в сумасшествие на 2 дня - у меня есть 2 PHP-функции, как описано ниже, как с использованием curl. Они указывают на то же «XML-шлюз», единственное отличие заключается в том, что он пытается сделать это через SSL, а другой - через незашифрованный HTTP.PHP CURL SSL Подключение к XML-шлюзу
Оператор коннектора HTTP работает точно так, как ожидалось, отправляя XML-файл и возвращая ответ сервера.
Соединитель SSL возвращает все так неопределенно «Произошла внутренняя ошибка сервера. Пожалуйста, повторите попытку позже'. В моем журнале ошибок lighttpd ничего не появляется, есть ли у кого какие-то яркие идеи?
Мне интересно, является ли это конфигурацией моего веб-сервера config/openSSL. Они оба являются стандартными пакетами Debian Wheezy. Я ценю, что SSL_VERIFYPEER & HOST, установленный для продажи, небезопасен, однако я пытался исчерпать варианты.
openssl s_client -connect xmlgw.companieshouse.gov.uk:443 -ssl3
и командной строки функция
curl https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway
также работает, как ожидалось на веб-сервере.
PHP функции:
//SSL post function
public function getSSLCurlResponse($xml) {
$url = "https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
//HTTP non SSL function
public function getCurlResponse($xml) {
$url = "http://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
любая помощь будет очень признателен!
Благодаря
Обновите сообщение своим решением и соглашайтесь с ним. –