我认为这是非常基本的问题,但我没有理解。
我正在使用LWP :: UserAgent包在perl脚本中构建一个post请求。 代码如下:
my $urlStr = "http://localhost/testproj/AServlet";
my $postDataStr = "{name => \'ankur434\'}";
my $response = $ua->post($urlStr, $postDataStr);
以上代码不起作用&给出以下错误 -
<Dec 6, 2010 3:15:54 PM IST> <Error> <HTTP> <BEA-101215> <Malformed Request "/testproj/AServlet". Request parsing failed, Code: -1>
但是当我直接将postDataStr的值传递给post方法时,它的效果非常好,如下所示:
my $response = $ua->post($urlStr, {name => 'ankur434'});
我尝试了一些选项,例如转义{使用反斜杠(\ {)但没有任何效果......
有人能提出什么建议吗?谢谢!
答案 0 :(得分:6)
{name => 'ankur434'}
是哈希引用。
"{name => \'ankur434\'}"
正如您的变量名所示,是一个字符串。 Perl不会自动将后者转换为前者。 您似乎认为在Perl中,只能将字符串分配给变量或传递给子例程。 不是这种情况。只需使用
my $urlStr = "http://localhost/testproj/AServlet";
my $postData = {name => 'ankur434'};
my $response = $ua->post($urlStr, $postData);