Diese Frage steht in etwa im Zusammenhang mit What’s the simplest way to make a HTTP GET request in Perl?.Wie codiere ich HTTP-GET-Abfragezeichenfolgen in Perl?
Bevor ich die Anfrage über LWP::Simple
mache, habe ich einen Hash der Query-String-Komponenten, die ich serialisieren/entkommen muss. Wie kann die Abfragezeichenfolge am besten codiert werden? Es sollte Leerzeichen und alle Zeichen berücksichtigen, die in gültigen URIs maskiert werden müssen. Ich denke, es ist wahrscheinlich in einem bestehenden Paket, aber Ich bin mir nicht sicher, wie ich es finden soll.
use LWP::Simple;
my $base_uri = 'http://example.com/rest_api/';
my %query_hash = (spam => 'eggs', foo => 'bar baz');
my $query_string = urlencode(query_hash); # Part in question.
my $query_uri = "$base_uri?$query_string";
# http://example.com/rest_api/?spam=eggs&foo=bar+baz
$contents = get($query_uri);
Kurz gesagt: sub escape_hash {my% h = @_; Return join '&', Karte {join '=', Karte uri_escape ($ _), $ _, $ h {$ _}} Tasten% h} –
Ich tue das auch, aber die Schachtelung von Karten sah einfach nicht aus direkt zu mir. –
Map-Innenseite für (jeden) mit Push klingt für mich kompliziert, aber es führt unnötige temporäre Variable. –