如何将多部分HTTP请求从Perl发布到Java并获得响应?

时间:2010-02-25 13:02:30

标签: perl post httprequest multipartform-data

我正在尝试从Perl中的一个子例程向基于Java的控制器发送请求。 但我没有得到任何回应。我知道Java代码工作文件,因为如果我从HTML表单发布它,我可以得到响应。

这是我的Perl代码:

  use HTTP::Request::Common;
  my $ua = LWP::UserAgent->new;

  my $response = $ua->request(POST 'http://testserver/testing.nc',
        Content_Type => 'form-data',
        Content => [
            method => 'submit',
            ftp_server => 'ftp.localhost',
            ftp_user => 'testuser',
            ftp_password => 'testpass',
            remote_path => '/home/files',
            port => 22,
            file_to_upload => ["$file"]
  ]);

此代码有问题吗?

1 个答案:

答案 0 :(得分:6)

发布数据must be of type multipart/form-data

修改:好的,事实证明,指定form-data就足够了,如HTTP::Request::Common文档中所述:

  

POST方法还支持RFC 1867中指定的基于表单的文件上载的multipart/form-data内容。您可以通过将内容类型form-data指定为请求标头之一来触发此内容格式

但是,要按照您使用的方式使用HTTP::Request::Common::POST,您需要导入POST

use HTTP::Request::Common qw(POST);

或使用$ua->post

  

post(...) $ua->request(POST ...)方法作为{{1}}的快捷方式存在。

使用LWP::UserAgent可以让您的生活更轻松。另请参阅WWW::Mechanize