6

Perl のサブルーチンの 1 つから Java ベースのコントローラーへのリクエストを投稿しようとしています。しかし、私は何の種類の応答も返ってきません。HTML フォームから投稿すると応答が得られるため、Java コードが動作するファイルを知っています。

これは私の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

編集: OK、 HTTP::Request::Common docsform-dataに記載されているように指定するだけで十分であることが判明しました:

The POST method also supports the content used for Form-b​​ased File Upload as specified in RFC 1867. 要求ヘッダーの 1 つとしてmultipart/form-dataコンテンツ タイプを指定することで、このコンテンツ形式をトリガーします。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 に答える