6

我正在尝试从我在 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"]
  ]);

这段代码有问题吗?

4

1 回答 1

6

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

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

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

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

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

或使用$ua->post

LWP::UserAgentpost(...)方法作为.$ua->request(POST ...)

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

于 2010-02-25T13:05:24.703 回答