2

こんにちは、Jmeter のフレッシュアーです

このコードを実行すると成功メッセージが表示されますが、リクエストとレスポンスのデータが表示されません.どうすればリクエストとレスポンスのデータを取得できますか?また、いくつかのパラメータを渡したいのですが、可能ですか?

私のJsamplerコードは

package com.wordpress.newspaint.jmeter.java.demo;

import java.io.Serializable;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

public class ExampleJavaTestClassRR extends AbstractJavaSamplerClient implements Serializable {
    private static final long serialVersionUID = 1L;

    // set up default arguments for the JMeter GUI
    @Override
    public Arguments getDefaultParameters() {
        Arguments defaultParameters = new Arguments();
        defaultParameters.addArgument("URL", "http://www.google.com/");
        defaultParameters.addArgument("SEARCHFOR", "newspaint");
      //  defaultParameters.addArgument("ENTITY","BANK");
        return defaultParameters;
    }

    public SampleResult runTest(JavaSamplerContext context) {       
        String urlString = context.getParameter( "URL" );
        String searchFor = context.getParameter( "SEARCHFOR" );
      //  String ENTITY = context.getParameter( "ENTITY" );

        SampleResult result = new SampleResult();
        result.sampleStart(); // start stopwatch

        try {
            java.net.URL url = new java.net.URL(urlString + "?q=" + searchFor);
            java.net.HttpURLConnection connection = (java.net.HttpURLConnection)url.openConnection(); // have to cast connection
            connection.setRequestMethod("POST");
            connection.connect();
            result.setSuccessful( true );
            result.setResponseMessage("URL IS"+ url);
            result.setResponseMessage( "Successfully performed actionSSSSn" );
            result.setResponseCodeOK(); // 200 code
        } catch (Exception e) {
           // result.sampleEnd(); // stop stopwatch
            result.setSuccessful( false );
            result.setResponseMessage( "Exception: " + e );

            // get stack trace as a String to return as document data
            java.io.StringWriter stringWriter = new java.io.StringWriter();
            e.printStackTrace( new java.io.PrintWriter( stringWriter ) );
            result.setResponseData( stringWriter.toString() );
            result.setDataType( org.apache.jmeter.samplers.SampleResult.TEXT );
            result.setResponseCode( "500" );
        }
        result.sampleEnd();
        return result;
    }
    void teardownTest() {
        System.out.println("inside tear Down:");
    }
}
4

1 に答える 1

4

最初

あなたのコード サンプルはあまり正しくありません。

この行:

result.setResponseData( stringWriter.toString() );

JavaDocによると、非推奨です

/**
 * Sets the responseData attribute of the SampleResult object.
 * Should only be called after setting the dataEncoding (if necessary)
 *
 * @param response
 *            the new responseData value (String)
 *
 * @deprecated - only intended for use from BeanShell code
 */

したがって、この方法で応答データを設定したい場合は、__Beanshell関数を使用する必要があります

setResponseData の正しい呼び出し方法は次のいずれかです。

result.setDataEncoding("UTF-8");
result.setResponseData("Everything is fine".getBytes());

また

result.setResponseData("Everything is fine", "UTF-8);

2番:

あなたのコードは、失敗した場合にのみ結果が返されることを前提としています。デフォルトのhttp://www.google.com/ URL を存在しない URL に変更すると、例外スタックトレースが応答として返されます。

成功時に何かを返す必要がある場合は、上記のいずれかの行を try ブロックの最後に追加する必要があります。

三番:

私が知る限り、Java Request のリクエスト データを設定することはできません。設定できるようにするには、サンプラーを開発する必要があります。ExampleSampler のソースを調べることをお勧めします

/src/examples/org/apache/jmeter/examples/sampler/ExampleSampler.java

既存の JavaTest および SleepTest Java リクエスト サンプラーの場合:

/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java
/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java

3つすべてに、「いくつかのパラメーターも渡したいのですが、可能ですか」に対する回答が含まれています

ソースはJMeter ダウンロード ページから入手できます。

于 2013-11-09T16:27:32.643 に答える