#rest #perl
Вопрос:
Эта линия завитков работает идеально :
curl -v -H "Content-Type: application/json" -k -d "{"UserName":"test","Password":"test"}" -X POST "https://xxx.xxx.xxx.xxx/redfish/v1/SessionService/Sessions"
но при попытке перевести на Perl в ответ я получаю код ошибки http 500.
Вот выдержка из моего кода :
$CLIENT=REST::Client->new(
{
host => $HOSTURL,
timeout => 300,
}
);
# Formatage de la requete
$URL = "/redfish/v1/SessionService/Sessions";
$ACTION = "POST";
%CONTENT_JSON = (
'UserName' => 'test',
'Password' => 'test'
);
%SESS_HEADERS = (
'Content-Type' => 'application/json',
);
$CONTENT_JSON = encode_json(%CONTENT_JSON);
# Lancement de la requete
print Dumper $ACTION,$URL,$CONTENT_JSON,%SESS_HEADERS;
$CLIENT->request($ACTION,$URL,$CONTENT_JSON,%SESS_HEADERS);
$REPCODE = $CLIENT->responseCode();
print Dumper $REPCODE;
print Dumper $CLIENT->responseContent();
exit;
и результаты :
$VAR1 = 'POST';
$VAR2 = '/redfish/v1/SessionService/Sessions';
$VAR3 = '{"UserName":"test","Password":"test"}';
$VAR4 = {
'Content-Type' => 'application/json'
};
$VAR1 = 500;
$VAR1 = 'Can't connect to xxx.xxx.xxx.xxx:443
Итак, где я ошибаюсь ?
Ответ №1:
Это похоже на подсказку:
$VAR1 = 'Can't connect to xxx.xxx.xxx.xxx:443
Вы уверены, что у вас правильное доменное имя? И работает ли ресурс по протоколу HTTPS?
О, и я держу пари, что REST::Клиент использует LWP::Агент пользователя, поэтому вам также потребуется установить LWP::Протокол::https.
Комментарии:
1. Да, он работает с curl на одном сервере. Но я забыл агент пользователя LWP::, после его включения мне пришлось отключить проверку ssl с помощью $ENV{‘PERL_LWP_SSL_VERIFY_HOSTNAME’} = 0;