Как я могу POST составить HTTP-запрос из Perl в Java и получить ответ? - PullRequest
6 голосов
/ 25 февраля 2010

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

6 голосов
/ 25 февраля 2010

Отправленные данные должны иметь тип multipart/form-data.

Редактировать: ОК, так что получается, что достаточно указать form-data, как указано в HTTP :: Request :: Common Документация:

Метод 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 . См. Также этот пример загрузки .

...