{"id":544,"date":"2013-05-07T20:30:31","date_gmt":"2013-05-07T12:30:31","guid":{"rendered":"http:\/\/www.yeetrack.com\/?p=544"},"modified":"2013-09-27T22:36:41","modified_gmt":"2013-09-27T14:36:41","slug":"jmeter-%e8%87%aa%e5%ae%9a%e4%b9%89%e6%b5%8b%e8%af%95%e8%af%b7%e6%b1%82%ef%bc%88%e5%8a%9f%e8%83%bd%e5%ae%8c%e5%96%84%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.yeetrack.com\/?p=544","title":{"rendered":"Jmeter \u81ea\u5b9a\u4e49\u6d4b\u8bd5\u8bf7\u6c42\uff08\u529f\u80fd\u5b8c\u5584\uff09"},"content":{"rendered":"<p>\u4e4b\u95f4\u5199\u8fc7\u4e00\u7bc7<a title=\"Jmeter \u81ea\u5b9a\u4e49\u6d4b\u8bd5\u8bf7\u6c42\" href=\"https:\/\/www.yeetrack.com\/?p=22\">Jmeter \u81ea\u5b9a\u4e49\u6d4b\u8bd5\u8bf7\u6c42<\/a>\uff0c\u6587\u7ae0\u4e2d\u53ea\u662f\u7b80\u5355\u63cf\u8ff0\u4e86\u81ea\u5b9a\u4e49java\u8bf7\u6c42\u7684\u8fc7\u7a0b\uff0c\u73b0\u5728\u5bf9SampleResult\u7c7b\u8fdb\u884c\u8865\u5145\uff0c\u63d0\u53d6\u6211\u4eec\u7684\u8bf7\u6c42response header\u4fe1\u606f\u548cresponse\u4fe1\u606f\uff0c\u8fd9\u6837jmeter\u5728\u8fdb\u884c\u538b\u6d4b\u65f6\uff0c\u5c31\u53ef\u4ee5\u66f4\u597d\u5730\u7ba1\u7406\u6211\u4eec\u7684java\u8bf7\u6c42\u4e86\u3002\u5176\u4e2d\u4f7f\u7528\u4e86jmeter2.9\u4e2d\u7684 ApacheJMeter_core.jar\u3001ApacheJmeter_java.jar\u548chttpclient-4.2.3.jar\u3002<!--more--><\/p>\n<pre>\u00a0package com.yeetrack.jmeter;\n\nimport java.io.IOException;\n\nimport org.apache.http.Header;\nimport org.apache.http.HttpEntity;\nimport org.apache.http.HttpHost;\nimport org.apache.http.HttpResponse;\nimport org.apache.http.client.ClientProtocolException;\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.impl.client.DefaultHttpClient;\nimport org.apache.http.util.EntityUtils;\nimport org.apache.jmeter.config.Arguments;\nimport org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;\nimport org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;\nimport org.apache.jmeter.samplers.SampleResult;\n\n\/**\n\u00a0* @author youthflies\n\u00a0* \u6613\u8e2a\u7f51 yeetrack.com\n\u00a0*\/\npublic class App extends AbstractJavaSamplerClient\n{\n\n\u00a0\u00a0 \u00a0private SampleResult sampleResult();\n    DefaultHttpClient httpClient = new DefaultHttpClient();\n\u00a0   @Override \u00a0\u00a0\u00a0 \n    public Arguments getDefaultParameters() \u00a0\u00a0\u00a0 \n    { \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \n        \/\/ TODO Auto-generated method stub \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \n        return super.getDefaultParameters(); \u00a0\u00a0\u00a0 \n    } \u00a0\u00a0 \u00a0\n    @Override \u00a0\u00a0\u00a0 \n    public void setupTest(JavaSamplerContext context) \u00a0\u00a0\u00a0 \n    { \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \/\/ TODO Auto-generated method stub \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \n        super.setupTest(context); \u00a0\u00a0\u00a0 \n    } \u00a0\u00a0\u00a0 \n    public SampleResult runTest(JavaSamplerContext arg0) \u00a0\u00a0\u00a0 \n    { \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \/\/ TODO Auto-generated method stub \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        sampleResult = new SampleResult(); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        sampleResult.setSampleLabel(\"jmeter\u81ea\u5b9a\u4e49\u6d4b\u8bd5\u8bf7\u6c42 by yeetrack.com\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0 HttpHost target = new HttpHost(\"www.baidu.com\", 80, \"http\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        HttpGet get = new HttpGet(\"http:\/\/www.baidu.com\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        \/\/\u8bbe\u7f6erequest header \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        get.setHeader(\"Connection\", \"keep-alive\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        get.setHeader(\"Host\", \"www.baidu.com\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        get.setHeader(\"User-Agent\", \"Apache-HttpClient\/4.2.3 (java 1.5)\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0     \/\/\u5904\u7406request header \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        Header[] requestHeaders = get.getAllHeaders(); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        StringBuffer requestheaderBuffer = new StringBuffer(); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n        for(Header header : requestHeaders) \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n            requestheaderBuffer.append(header.getName()+\":\"+header.getValue()+\"\\n\"); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n            sampleResult.setRequestHeaders(requestheaderBuffer.toString()); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0        try \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n            { \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/\u5f00\u59cb\u8ba1\u65f6 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n                 sampleResult.sampleStart(); \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n                 \/\/\u6267\u884cget\u65b9\u6cd5 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 HttpResponse response = httpClient.execute(target, get); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0           \/\/\u8ba1\u65f6\u7ed3\u675f \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 sampleResult.sampleEnd(); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                \/\/\u5904\u7406response header \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 Header[] headers = response.getAllHeaders(); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 StringBuffer\u00a0 headerBuffer = new StringBuffer(); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 headerBuffer.append(response.getStatusLine()+\"\\n\"); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0                 for(Header header : headers) \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n                      headerBuffer.append(header.getName()+\":\"+header.getValue()+\"\\n\"); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                      sampleResult.setResponseHeaders(headerBuffer.toString()); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/\u5904\u7406response \u6587\u672c \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                    HttpEntity httpEntity = response.getEntity(); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                     String responseString = EntityUtils.toString(httpEntity); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                   System.out.println(responseString); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                  sampleResult.setResponseData(responseString, \"utf-8\"); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                   sampleResult.setResponseCodeOK(); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                   if(response.getStatusLine().toString().contains(\"200\")) \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n                               sampleResult.setResponseCode(\"200\"); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                             sampleResult.setResponseMessageOK(); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                             sampleResult.setSuccessful(true); \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                            if(true) \/\/\u6dfb\u52a0\u81ea\u5df1\u7684\u6821\u9a8c\u6761\u4ef6\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u5728jmeter\u4e2d\u6dfb\u52a0\uff0c\u4e0d\u5728\u4ee3\u7801\u4e2d\u6dfb\u52a0 \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\n                                    sampleResult.setSuccessful(true); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                       } \n                catch (ClientProtocolException e) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                { \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ TODO Auto-generated catch block \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                       e.printStackTrace(); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 } catch (IOException e) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                { \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ TODO Auto-generated catch block \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                         e.printStackTrace(); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n                 } \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 return sampleResult; \u00a0\u00a0\u00a0 \n                 } \u00a0\u00a0 \u00a0\n                 @Override \u00a0\u00a0\u00a0 \n                 public void teardownTest(JavaSamplerContext context) \u00a0\u00a0\u00a0 \n                { \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \/\/ TODO Auto-generated method stub \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \n                       super.teardownTest(context); \u00a0\u00a0\n                       httpClient.getConnectionManager().shutdown();\u00a0 \n     } }<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e4b\u95f4\u5199\u8fc7\u4e00\u7bc7Jmeter \u81ea\u5b9a\u4e49\u6d4b\u8bd5\u8bf7\u6c42\uff0c\u6587\u7ae0\u4e2d\u53ea\u662f\u7b80\u5355\u63cf\u8ff0\u4e86\u81ea\u5b9a\u4e49java\u8bf7\u6c42\u7684\u8fc7\u7a0b\uff0c\u73b0\u5728\u5bf9SampleResult\u7c7b\u8fdb\u884c\u8865\u5145\uff0c\u63d0\u53d6\u6211\u4eec\u7684\u8bf7\u6c42response header\u4fe1\u606f\u548cresponse\u4fe1\u606f&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[34],"tags":[8,7,13],"class_list":["post-544","post","type-post","status-publish","format-standard","hentry","category-software","tag-java","tag-7","tag-13"],"views":6185,"_links":{"self":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=544"}],"version-history":[{"count":7,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/544\/revisions"}],"predecessor-version":[{"id":739,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/544\/revisions\/739"}],"wp:attachment":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}