2012-03-23 3 views
0

私のjmeterテストでは、HttpRequestの前にBSF PreProcessorステップ(groovyを使用)を実行しています。このHttpRequestステップでバイナリデータを含む投稿を送信する必要がありますが、私のバイナリデータはオンザフライで計算されます。このバイナリデータをリクエストの投稿本体に設定するにはどうすればよいですか? HTTPRequestにはファイルからバイナリ投稿をするオプションがあることがわかります。しかし、私はそれぞれの要求に対して一時ファイルを作成したくありません。jmeterのバイナリポストボディをHTTPSamplerProxyに設定するには?

おかげで、JMeterのバージョン2.6のよう

答えて

2

は、それをする方法はありません。バイナリボディのpostは、HttpSampleProxy#setHTTPFiles(HTTPFileArg []ファイル)のファイル入力を要求します。また、HTTPFileArgには、ファイルシステム上の実際のファイルへのパスしか含まれていません。 UIには、ポストボディをテキストとして設定するオプションがありますが、HttpSampleProxy#setArguments(Argument value)を使用しています。引数はバイナリではなく、テキスト本体のみを使用します。そして、私はこのオブジェクトをインスタンス化する方法を知らない。

0

私はsetArgumentに問題がありました。それはコンテンツをエンコードするためです。 addNonEncodedArgumentはURIエンコーディングを実行しませんが、すでにいくつかの引数がある場合は、本体として設定されません。 これはどんな場合でもうまくいきました:

if(((HTTPSamplerProxy)sampler).getArguments()==null){ 
     ((HTTPSamplerProxy)sampler).addNonEncodedArgument("body", body, ""); 
    }else{ 
     ((HTTPSamplerProxy)sampler).getArguments().getArgument(0).setValue(body); 
    } 
関連する問題