4

既存のフレームワークを使用して、いくつかのAPIを自動化しています。このフレームワークはHTTP::Requestモジュールを使用します。ファイルをアップロードするためのスクリプトを作成する必要があります。HTTP :: Request :: Commonモジュールを使用してこれを行うことはできますが、Http::Requestモジュールを使用することはできません。しかし、これを行うためにのみHttp::Requestを使用する必要があります。コードスニペットの下:

HTTP :: Request :: Common \ThisWorksを使用する

    $request = POST $uri,
    Content_Type => 'multipart/form-data',
    Content => [
    file => [$file]
    ]
    ;
    my $results=$ua->request($request ) ;

HTTP :: Request \ Thisが機能しないため、ファイルが見つからないというエラーが発生します

    my $req = HTTP::Request->new("POST", $uri );
    $req->header(Content_Type => "form-data");
    $req->content('file=>$file');
    my $res = $ua->request($req);

上記のコードで私が間違っていることを誰かに教えてもらえますか?

4

1 に答える 1

6

残念ながら、このメソッドでは、オブジェクトPOSTのコンストラクターをラップするだけでなく、さらに多くのことが行われています (こちらを参照)。少なくとも次のものを含めます (コードのクイック スキャンから)。HTTP::Request

  • Content-Type ヘッダーをmultipart/form-dataランダムboundaryに変更して、リクエスト内のファイル データの開始位置を示す
  • Content-Disposition ヘッダーを適切な値に設定する
  • ファイルを読み取り、ファイルの内容をリクエスト本文に格納する

上記のすべてを手動で実行しようとしないことを強くお勧めしますが、正確な制約と使用できない理由を知ることは困難ですHTTP::Request::Common

于 2012-10-10T13:37:42.437 に答える