in reply to Posting files to Amazon MWS using LWP

The HTTP::Request::content() method is described as: "$r->content( $bytes ) ... Note that the content should be a string of bytes.", so what do you expect it to do with an anonymous array containing a list of strings:  $req->content([%post_parameters]);?

You should be using the LWP::UserAgent::post() method: "$ua->post( $url, \%form )".


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: Posting files to Amazon MWS using LWP
by rethaew (Sexton) on Nov 29, 2011 at 20:03 UTC
    I have seen that method, but it is not clear on how to add the additional MD5 header I need to add, as well as adding the contents of the file. Would you be able to expand a little on your example to show that?

      Completely untested, but my interpretation of the docs suggests it should look something like this:

      use LWP::UserAgent; use HTTP::Request::Common; use Digest::MD5::File qw(file_md5_hex); use File::Slurp; #text file to upload my $text_file = 'file.txt'; #calulate Content-MD5 Header my $md5hash = file_md5_hex($text_file); #read file my $file_contents = read_file($text_file); #fields to post my %post_parameters = ( 'a' => 'red', 'b' => 'blue', 'c' => 'green' ); $ua = LWP::UserAgent->new(); $ua->agent('Blah/Perl'); $ua->post( 'http://amazonmws.blah', Content_Type =>'form-data', Content-MD5 => $md5hash, Content => [ file => [ $file_contents, $text_file ], %post_parameters ], ); print STDERR $rsp->status_line;

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        Close, but no cigar :) HTTP::Request::Common has the detailed docs
        [ $local_file_to_open, $filename_to_send, Header => Value... ] [ undef, $filename_to_send, Header => Value,..., Content => $file_cont +ents ]
        If $filename_to_send eq "", none is sent, if $filename_to_send is undef, then basename of $local_file_to_open is sent