首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

分享一上自己写的简单的通用http测试工具

2012-10-27 
分享一下自己写的简单的通用http测试工具? 晕要发到博客上频道的怎么发到了这里。。。管理员能帮忙移动一下吗

分享一下自己写的简单的通用http测试工具

? 晕要发到博客上频道的怎么发到了这里。。。管理员能帮忙移动一下吗??

? 會議系統的优化有了改进,谢谢大家的建议,同时分享一下我写的http通用请求测试工具。保持session是这类测试工具的难点,因为你要进行一系列的操作,比如登录---建立会议---删除会议---登出,你每次请求都要保证你hold住前一次请求的sessionId,我这里是用cookie 携带上一次访问的sessionId, 分享一下我做的通用http请求测试工具,可以自己携带参数比如用户名,密码等等,封装到Map中。

??? 以下可以模拟单线程请求。还可以改装一下,变成多线程的并发,可以分析每次的返回结果,测试时间和返回码(200or404?).

 import java.io.BufferedReader;?import java.io.IOException;?import java.io.InputStream;?import java.io.InputStreamReader;??? import java.io.OutputStream;   ?import java.net.HttpURLConnection;?   import java.net.URL;   ?import java.net.URLEncoder;?   import java.util.HashMap;?   import java.util.Iterator;??? import java.util.List;?   import java.util.Map;??? import java.util.Set;??? import java.util.Map.Entry;??? import com.avonaco.testPojo.GeneralUrlResult;
public class HttpRequestProxy{       private static int connectTimeOut = 15000;    private static int readTimeOut = 20000;    private static String requestEncoding = "UTF-8";   private static String JESSIONID;    public static  GeneralUrlResult doPost(String reqUrl, Map parameters,            String recvEncoding){                        //统计测试开始结束时间    Long begin=System.currentTimeMillis();     Long end=System.currentTimeMillis();    GeneralUrlResult gr=new GeneralUrlResult();       HttpURLConnection url_con = null;        String responseContent = null;        int code=0;        try        {            StringBuffer params = new StringBuffer();            for (Iterator iter = parameters.entrySet().iterator(); iter                    .hasNext();)            {                Entry element = (Entry) iter.next();                params.append(element.getKey().toString());                params.append("=");                params.append(URLEncoder.encode(element.getValue().toString(),                        HttpRequestProxy.requestEncoding));                params.append("&");            }            if (params.length() > 0)            {                params = params.deleteCharAt(params.length() - 1);            }            URL url = new URL(reqUrl);            url_con = (HttpURLConnection) url.openConnection();            url_con.setUseCaches(false);            url_con.setRequestMethod("GET");                   if(JESSIONID==null)          {//这里的requUrl可以写成网站的通用,比如登录的地址以后每次测试都用这个sessionId保持测试的连贯性         JESSIONID=testUrlConnection("http://192.168.9.225:8080/Conference/login.do?userName=luyi&&password=123456&&loginType=WEB");          }          System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>123456"+JESSIONID);              url_con.setRequestProperty("Cookie",JESSIONID ); //            //            System.setProperty("sun.net.client.defaultConnectTimeout", String//                    .valueOf(HttpRequestProxy.connectTimeOut));// (单位:毫秒)jdk1.4换成这个,连接超时//            System.setProperty("sun.net.client.defaultReadTimeout", String//                    .valueOf(HttpRequestProxy.readTimeOut)); // (单位:毫秒)jdk1.4换成这个,读操作超时                          url_con.setConnectTimeout(12000);//(单位:毫秒)jdk//             1.5换成这个,连接超时             url_con.setReadTimeout(50000);//(单位:毫秒)jdk 1.5换成这个,读操作超时                       url_con.setDoOutput(true);                 byte[] b = params.toString().getBytes();            url_con.getOutputStream().write(b, 0, b.length);            url_con.getOutputStream().flush();            url_con.getOutputStream().close();                                  code=url_con.getResponseCode();            String header;            for(int i=0;true;i++){                header=url_con.getHeaderField(i);                if(header==null)break;                System.out.println("header:"+header);                //System.out.println(c.getContentType());            }                                InputStream in = url_con.getInputStream();                      BufferedReader rd = new BufferedReader(new InputStreamReader(in,                    recvEncoding));            String tempLine = rd.readLine();            StringBuffer tempStr = new StringBuffer();            String crlf=System.getProperty("line.separator");            while (tempLine != null)            {                tempStr.append(tempLine);                tempStr.append(crlf);                tempLine = rd.readLine();            }                      //得到请求网站返回的内容            responseContent = tempStr.toString();           end=System.currentTimeMillis();            rd.close();            in.close();       }        catch (IOException e)        {         System.out.println(e.toString());        }        finally        {            if (url_con != null)            {                url_con.disconnect();            }        }                 //得到测试的每次响应时间        Long between=end-begin;//gr是我写的一个简单的结果类,其中有测试时间,返回结果200?or404,还有返回内容        gr.setBetween(between);        gr.setCode(code);        gr.setResult(responseContent);        return gr;    }       public static int getConnectTimeOut()    {        return HttpRequestProxy.connectTimeOut;    }      public static int getReadTimeOut()    {        return HttpRequestProxy.readTimeOut;    }        public static String getRequestEncoding()    {        return requestEncoding;    }        public static void setConnectTimeOut(int connectTimeOut)    {        HttpRequestProxy.connectTimeOut = connectTimeOut;    }      public static void setReadTimeOut(int readTimeOut)    {        HttpRequestProxy.readTimeOut = readTimeOut;    }    public static void setRequestEncoding(String requestEncoding)    {        HttpRequestProxy.requestEncoding = requestEncoding;    }    public static String testUrlConnection(String Strurl){         String urlStr=Strurl;        OutputStream out=null;         InputStream in=null;         try {             URL url=new URL(urlStr);             HttpURLConnection con=(HttpURLConnection)url.openConnection();             con.setRequestMethod("GET");                          //打印请求头信息             Map hfs=con.getHeaderFields();             Set<String> keys=hfs.keySet();             for(String str:keys){                 List<String> vs=(List)hfs.get(str);                 System.out.print(str+":");                 for(String v:vs){                     System.out.print(v+"\t");                 }                 System.out.println();             }             System.out.println("-----------------------");             String cookieValue=con.getHeaderField("Set-Cookie");             System.out.println("cookie value:"+cookieValue);             String sessionId=cookieValue.substring(0, cookieValue.indexOf(";"));             return sessionId;         } catch (Exception e) {             e.printStackTrace();             return null;         }finally{             try {                 if(in!=null)                     in.close();                 if(out!=null)                     out.close();             } catch (IOException e) {                 e.printStackTrace();             }         }     }     public static void main(String[] args)    {     Map map = new HashMap();        map.put("chart", "555555");        map.put("conId","727622");        GeneralUrlResult temp = HttpRequestProxy.doPost("http://192.168.9.225:8080/Conference/readChart.jsp", map, "UTF-8");        System.out.println("页面为:\n"+temp);    }public static String getJESSIONID() {return JESSIONID;}public static void setJESSIONID(String jessionid) {JESSIONID = jessionid;}}

?

1 楼 kxyk 2009-08-15   缺这个类.GeneralUrlResult 2 楼 alswl 2010-02-24   中间的注释让我想起 com.hengpeng.common.web.HttpRequestProxy 这个包~
呵呵

热点排行