in reply to REST::Client + Request Body

Looks like a header value, but even if it is in the BODY, HTTP::Tiny plus a JSON module would give you a lot more control over what it is you're doing.

Replies are listed 'Best First'.
Re^2: REST::Client + Request Body
by ravigupta1 (Novice) on Jul 09, 2020 at 06:14 UTC

    Finally it is working. thanks for all help and pointers shared with me which helped me to learn a lot and make it work. For rest of community users (like me 🙂 ) below are the issues and resolutions.

    From the Quest REST API documentation,

  • I didn't find what all supported headers should be there in PERL code to support the REST Call.
  • No where was mentioned that authToken OR user/password need to be supplied as Request Body/Content.
  • May be i missed in those things in documentation or due to as i have limited knowledge with Quest and PERL 🙂
  • Anyway, I tried POSTMAN and downloaded the QUEST collection and started working on it and then came to know about above issues and corrective actions and it worked afterwards. For community users, below is the short code for authentication:

    use REST::Client; use JSON qw(decode_json); use Data::Dumper; my $client = REST::Client->new(host => 'https://<Your Host>:<APIPort>/ +api/v1'); $req = "authToken=<Authentication Token Value>"; $headers = { Accept => '*/*', 'Content-Type' => 'application/x-www-form-urlencoded', }; #Below 2 lines are to bypass the SSL verification which was also causi +ng authentication issues. $client->getUseragent()->ssl_opts(verify_hostname => 0); $client->getUseragent()->ssl_opts(SSL_verify_mode => SSL_verify_NONE); $client->POST('/security/login',$req,$headers); print($client->responseCode()); print($client->responseContent()); exit();
      #Below 2 lines are to bypass the SSL verification which was also causi +ng authentication issues. $client->getUseragent()->ssl_opts(verify_hostname => 0); $client->getUseragent()->ssl_opts(SSL_verify_mode => SSL_verify_NONE);

      It's dangerous not to verify the certificates, it makes a man-in-the-middle attack possible. If this is for production code, fix the cause instead of silencing the symptoms.

      map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]