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

goe*_*goe 6 perl post multipartform-data httprequest

我试图从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"]
  ]);
Run Code Online (Sandbox Code Playgroud)

这段代码有问题吗?

Sin*_*nür 6

发布的数据必须是类型multipart/form-data.

编辑:好的,事实证明,form-dataHTTP :: Request :: Common文档中所述,指定就足够了:

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

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

use HTTP::Request::Common qw(POST);
Run Code Online (Sandbox Code Playgroud)

或使用$ua->post:

LWP :: UserAgentpost(...)方法作为快捷方式存在.$ua->request(POST ...)

使用WWW :: Mechanize可以让您的生活更轻松.另请参阅此上传示例.