ckj has asked for the wisdom of the Perl Monks concerning the following question:

HI, I am Completely puzzled in creating content for post method of mechanize module. Can you tell me simply how to create the content part of $m->post($url, content=>$content) Is $content just have content type and content in it?
  • Comment on Completely puzzled in creating content for post method of mechanize module

Replies are listed 'Best First'.
Re: Completely puzzled in creating content for post method of mechanize module
by tobyink (Canon) on Apr 04, 2012 at 11:17 UTC

    What content you should put in $content depends very much on what content $url is expecting to receive.

    The most commonly accepted format for the content is called "application/x-www-form-urlencoded" (them HTTP guys sure know how to choose good names for things). This is a string formatted like this:

    key1=value1&key2=value2

    Luckily, WWW::Mechanize (or rather, one of its dependencies, HTTP::Request::Common) will automatically build that string for you given an arrayref. So you could set $content like this:

    $content = [ key1 => 'value1', key2 => 'value2', ];

    Content-types other than application/x-www-form-urlencoded are certainly possible, but unless you've been specifically told to use a particular content-type, it's pretty safe to assume that application/x-www-form-urlencoded is what is expected.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
    A reply falls below the community's threshold of quality. You may see it by logging in.