2011-09-20 17 views
8

私はいくつかのパフォーマンステストを書くためにJMeterと協力しています。私がする必要があることの1つは、巨大なjsonリクエストを動的に構築し、それをPOSTリクエストpaylodとして送信することです。 BSFプリプロセッサを使用して、私はエンコードされずに送信したいのですが、私のJavaScript文字列はエンコードされていますが、ペイロードは動的に変更できます。BSFプリプロセッサを使用したJSON POSTリクエストの送信

BSFプリプロセッサがどのようにエンコードを停止するかわかりません。次のように私は現在、私のPOSTリクエストのペイロードを変更するために使用するコマンドは次のとおりです。あなたがはっきりBSFプリプロセッサを使用することが期待されている方法を説明し、いくつかの例に私を指すことができれば

var jsonData = '[{"item":"value","something":"everything"}]'; 
sampler.addArgument("",jsonData); 

私は本当に感謝します。

エンコードをスキップするためのポインタもありがとうと思います。これをfalseにあなたのサンプラー「HTTPArgument.always_encode」に

答えて

1

を無効にする必要があります。

だからあなたのソリューションは、次の操作を実行することです:、BSFサンプラーで

  1. 変数にあなたのJSONを置く:ポストボディに

    var jsonData = '[{"item":"value","something":"everything"}]'; 
    vars.putObject("jsonData",jsonData); 
    
  2. を、置く:

    ${jsonData} 
    

ヨーヨーを使用する別のオプションウル方法はBeanShellの言語(JavaScriptのではない)を使用してBSFPreProcessorに置くことです。

import org.apache.jmeter.protocol.http.util.HTTPArgument; 
String jsonData = "[{\"item\":\"value\",\"something\":\"everything\"}]"; 
HTTPArgument arg =new HTTPArgument("", jsonData, null, true); 
arg.setAlwaysEncoded(false); 
sampler.getArguments().addArgument(arg); 

よろしく

フィリップM.

-1

セットプロパティは、ポストボディタブを使用してRAW要求ペインを使用することができるのJMeter 2.6ので、引数のエンコード

+1

ソリューションが不完全で、完全な1については、以下をご覧ください –

関連する問題