Переведите запрос на завиток в rest::клиентский Perl

#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;