package UPS::TrackRequest; use strict; use warnings; use LWP::UserAgent; use HTTP::Request::Common; use XML::Simple; use Data::Dumper; use UPS::TrackedPackage; use Class::MethodMaker [ new => "new", scalar => [ qw( License Username Password TrackingNumber _returned_xml debug) ], scalar => [ [{ -default => 'https://wwwcie.ups.com/ups.app/xml/Track' }, 'URL'], [{ -default => 'A Package'}, 'description'] ] ]; sub requestTrack { my $self = shift; my $_ups_xml_req = " $self->License $self->UserName $self->Password $self->PackageName Track activity $self->TrackingNumber "; if (defined( $self->debug) ) { print $_ups_xml_req, "\n"; } my $userAgent = LWP::UserAgent->new(agent => 'perl post'); my $response = $userAgent->request(POST $self->URL, Content_Type => 'text/xml', Content => $_ups_xml_req); if (defined( $self->debug) ) { print $response->decoded_content, "\n"; } print $response->error_as_HTML unless $response->is_success; my $xml = new XML::Simple; #$self->{_returned_xml} = $xml->XMLin( $response->decoded_content); my $processedXML = $xml->XMLin( $response->decoded_content); #print Dumper($processedXML); #print $processedXML->{Response}{Error}{ErrorDescription}; #return UPS::TrackedPackage->new( _returned_xml => $processedXML); print (%{$processedXML}); return UPS::TrackedPackage->new( _returned_xml => %{$processedXML}); } #sub { 1; use strict; use warnings; package UPS::TrackedPackage; use Class::MethodMaker [ new => "new", scalar => 'debug' , hash => '_returned_xml' , ]; 1; #########My Test Script###########: use strict; use warnings; use UPS::TrackRequest; use Data::Dumper; my $Package = UPS::TrackRequest->new(); $Package->Username('miles800'); #print $Package->Username(); #print $Package->URL(); my $tp = $Package->requestTrack(); print $Package->_returned_xml(); print $tp; print Dumper($Package->_returned_xml()); #print $tp->_returned_xml()->{Shipment}{Shipper}{Address};