解码form-urlencoded到hash

时间:2012-03-13 19:30:29

标签: perl lwp

我收到LWP请求的响应是application/x-www-form-urlencoded是否可以通过某种对象方法将其文本转换为哈希?

1 个答案:

答案 0 :(得分:7)

# from a HTTP::Response object
my $urlencoded = $response->content;
  1. Vars in CGI返回哈希值。

    use CGI qw();
    CGI->new($urlencoded)->Vars;
    
  2. parameters in Plack::Request返回一个Hash::MultiValue对象,这实际上是相应的数据结构。

    use Plack::Request qw();
    Plack::Request->new({QUERY_STRING => $urlencoded})->parameters;
    
  3. param in APR::Request/libapreq2 - 不是一个Perl哈希,而是一个附加了Magic的XS对象,其行为足够接近。

    insert hand-waving here, no libapreq2 available right now for testing
    
  4. url_params_mixed in URL::Encode

    require URL::Encode::XS;
    use URL::Encode qw(url_params_mixed);
    url_params_mixed $urlencoded;
    
  5. parse_query_string in CGI::Deurl::XS

    use CGI::Deurl::XS 'parse_query_string';
    parse_query_string $urlencoded;
    
  6. 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;
    
  7. 加分:另请参见HTTP::Body::UrlEncoded使用的Catalyst