Ich verwende HTTP::Tiny
, um eine Beispiel-HTTP-Client zu tun (nur erhalten und Anfragen). GET
Anfragen funktionieren gut, aber ich habe ein Problem, wenn ich versuche, eine POST
Anfrage zu tun. Hier ist der Code:Perl http Post Anfrage: Versuch, Referenz als Lvalue in Substr zu verwenden
sub postRequest {
my %params = @_;
my $url= "http://localhost:3001/Perform";
my %opt;
$opt{content} = \%params;
my $http = HTTP::Tiny->new();
my $response = $http->request("POST", $url, \%opt);
# my $response = $http->post($url, {content => \%params}); # not working too
unless ($response->{success}) {
die "Unsuccessful request to " . $url. "\n";
}
print "response: " . $response->{content} . "\n";
return $response->{content};
}
Wo %params
Hash wie { key1 => "val1", key2 => "val2" }
ist. Die Nachricht, die ich bekomme, ist Attempt to use reference as lvalue in substr at /usr/lib/perl5/vendor_perl/5.22/HTTP/Tiny.pm line 806, <STDIN> line 7.
und ich habe keine Idee, wie man es löst.
Sie können versuchen, 'post_form' Methode, die ich glaube, Sie die params als hashref passieren kann. [post_form] (http://search.cpan.org/~dagolden/HTTP-Tiny-0.058/lib/HTTP/Tiny.pm#post_form) Ich habe den Code nicht versucht, sorry. – zafatar
@ZaferK was ist der Wert von '$ form_data'? –
soweit ich das aus der Dokumentation verstehe. '$ form_data = {key1 =>" val1 ", key2 =>" val2 "}; $ response = $ http-> post_form ($ url, $ form_data); ' Dies könnte für POST funktionieren. – zafatar