#!/usr/bin/env perl use strictures; use WWW::Mechanize; use URI; use HTTP::Request::Common; # For fun/test, see comment below. my $app_id = shift || $ENV{APPLICATION_ID} || die "Give or set APPLICATION_ID\n"; my $app_pass = shift || $ENV{APPLICATION_PASS} || die "Give or set APPLICATION_PASS\n"; my $dingus = WWW::Mechanize->new( autocheck => 0, agent => "MelleMelBot/1.0" ); $dingus->default_header( ABC_APP_ID => $app_id, IABC_APP_PASSWORD => $app_pass ); my $uri = URI->new("http://:/cdx/abc/gsa/deliverables"); my $post = POST $uri, Content_Type => "form-data", Content => [ deliverable_file => [ "real-path-to-sample.xml" ], file_name => "RRR-xxxxxxxxxx.mmddyyyy-hhmmss.ext", agency_task_order_parameter => "12345667890", contractor_service_request_number => "123456780123456789", deliverable_type => "Notification", data_transaction_file_date => "2016-01-21", tags => "[tagSample1, tagSample2]" ]; # Peek if you will. Note, default headers are not there yet. # print $post->as_string; my $response = $dingus->request( $post ); # $post object is just demo intermediary. # This could also be $dingus->post( $uri, Content ... ); # Default headers are there because they went through the Mech object. print $response->request->as_string;