http://qs321.pair.com?node_id=1215256


in reply to Re^3: Post using LWP useragent curl post request to useragent request
in thread Post using LWP useragent curl post request to useragent request

my $request = HTTP::Request::Common::POST( BOX, [ Content_Type => 'form-data', Authorization => "Bearer $token", Content => [ attributes => $c, #encoded json file => [ "$Bin/test.txt" ], #file_path ], ] );
__________________________try 2_______________________________
sub build_json_request { my ($url) = @_; my $header = ['Authorization' => "Bearer $token", 'Content-Type' = +> 'form-data']; return HTTP::Request->new('POST', $url, $header, {attributes => $c +, file=> [ "$Bin/upload.bak" ],} ); } my $r = build_json_request (ENDPOINT ); my $res = $ua->request($r);
I am pro when comes to Perl but don't know how http post works. Do I have to encode body params while passing. and not sure if LWP::Useragent will fetch the file contain itself given the full file path or not. Can you help me in get this working.

Replies are listed 'Best First'.
Re^5: Post using LWP useragent curl post request to useragent request
by poj (Abbot) on May 26, 2018 at 21:11 UTC
    not sure if LWP::Useragent will fetch the file contain itself

    Yes, it will. Try

    #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use JSON; use FindBin qw($Bin);; my $token = ''; my $url = 'http://'; my $attributes = encode_json ({ name => "test.txt", parent => { id => 0 } }); my $ua = LWP::UserAgent->new; my $response = $ua->post($url, Content_Type => 'form-data', Authorization => "Bearer $token", Content => [ attributes => $attributes, file => [ "$Bin/test.txt" ], ], ); if ($response->is_success) { print $response->decoded_content; } else { die $response->status_line; }
    poj
      OMG it works like charm. I still dont know why I was complicating the things. This code block works perfectly for me. Thanks you so much @poj I got stuck for like couple of days on this issue. Now I am good to go ahead its part of CPAN module I am creating. once again thanks for your help.