Как может я POST многослойный Запрос HTTP от Perl до Java и получать ответ?

Я пытаюсь отправить от одной из моих подпрограмм в 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"]
  ]);

Есть ли что-то не так с этим кодом?

6
задан brian d foy 25 February 2010 в 22:07
поделиться

1 ответ

Размещенные данные должны быть типа multipart/form-data.

Edit: ОК, оказывается, достаточно указать form-data, как сказано в HTTP::Request::Common docs:

Метод POST также поддерживает multipart/form-data содержимое, используемое для загрузки файлов на основе формы, как указано в RFC 1867. Вы вызываете этот формат содержимого, указывая тип содержимого form-data в одном из заголовков запроса.

Однако, чтобы использовать HTTP::Request::Common::POST так, как вы используете, вам нужно импортировать POST:

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

или использовать $ua->post:

В post(. ...) метод LWP::UserAgent существует как сокращение для $ua->request(POST ...).

Вы можете облегчить себе жизнь, используя WWW::Mechanize. См. также этот пример загрузки.

6
ответ дан 17 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: