我收到LWP请求的响应是application/x-www-form-urlencoded
是否可以通过某种对象方法将其文本转换为哈希?
答案 0 :(得分:7)
# from a HTTP::Response object
my $urlencoded = $response->content;
Vars
in CGI
返回哈希值。
use CGI qw();
CGI->new($urlencoded)->Vars;
parameters
in Plack::Request
返回一个Hash::MultiValue
对象,这实际上是相应的数据结构。
use Plack::Request qw();
Plack::Request->new({QUERY_STRING => $urlencoded})->parameters;
param
in APR::Request
/libapreq2
- 不是一个Perl哈希,而是一个附加了Magic的XS对象,其行为足够接近。
insert hand-waving here, no libapreq2 available right now for testing
url_params_mixed
in URL::Encode
require URL::Encode::XS;
use URL::Encode qw(url_params_mixed);
url_params_mixed $urlencoded;
parse_query_string
in CGI::Deurl::XS
use CGI::Deurl::XS 'parse_query_string';
parse_query_string $urlencoded;
query_form
in URI
也很适合; query_form_hash
in URI::QueryParam
也是如此。
use URI qw();
URI->new("?$urlencoded")->query_form;
use URI::QueryParam qw();
URI->new("?$urlencoded")->query_form_hash;
加分:另请参见HTTP::Body::UrlEncoded
使用的Catalyst。