gpt4 book ai didi

perl - 如何在 Perl 中对 HTTP GET 查询字符串进行编码?

转载 作者:可可西里 更新时间:2023-11-01 15:07:39 26 4
gpt4 key购买 nike

这个问题与What’s the simplest way to make a HTTP GET request in Perl?有些相关.

在通过 LWP::Simple 发出请求之前,我有一个需要序列化/转义的查询字符串组件的散列。 对查询字符串进行编码的最佳方式是什么?它应该考虑空格和所有需要在有效 URI 中转义的字符。我认为它可能在现有包中,但我不确定如何找到它。

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);

最佳答案

URI::Escape正如其他人给出的那样,这可能是最直接的答案,但我建议使用 URI整个事物的对象。 URI 自动为您转义 GET 参数(使用 URI::Escape)。

my $uri = URI->new( 'http://example.com' );
$uri->query_form(foo => '1 2', bar => 2);
print $uri; ## http://example.com?foo=1+2&bar=2

作为额外奖励,LWP::Simple's get 函数将采用 URI对象作为参数而不是字符串。

关于perl - 如何在 Perl 中对 HTTP GET 查询字符串进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/449158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com