- 浏览: 445048 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
danStart:
想问问,能监测服务是否挂掉吗?
公司要求实时监控服务器,写个Web的监控系统 -
hepct:
你好,最近在搭一个游戏服务器,能加好友请教下吗?1538863 ...
java游戏服务端实现 -
Limewwy:
没打完就发表了?为啥要这样设置?【游戏中需要传递用户的积分,这 ...
java游戏服务端实现 -
Limewwy:
楼主您好。请教为啥要这样设计?
java游戏服务端实现 -
3849801:
楼主,能够提供更具体的文档或者指导吗?我想搭建一个服务端,非常 ...
java游戏服务端实现
晕要发到博客上频道的怎么发到了这里。。。管理员能帮忙移动一下吗
會議系統的优化有了改进,谢谢大家的建议,同时分享一下我写的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; } }
评论
2 楼
alswl
2010-02-24
中间的注释让我想起 com.hengpeng.common.web.HttpRequestProxy 这个包~
呵呵
呵呵
1 楼
kxyk
2009-08-15
缺这个类.GeneralUrlResult
发表评论
-
twitter的一次提高50%性能的优化
2012-04-18 13:53 1740标红 的是陌生单词 The Anatomy of a ... -
java性能优化的地方
2011-08-23 17:06 1119自己都懂,但是难的 ... -
如何定位OutOfMemory的根本原因
2011-07-19 17:39 2047自己最近做了一些关于工厂MES软件导致的OOM,比如avon, ... -
JVM调优新(转)
2010-09-29 10:11 12431. Heap设定与垃圾回收 ... -
jvm调优总结(江南白衣)
2010-09-28 16:02 18927月16日 JVM调优总 ... -
主题:优化JVM参数提高eclipse运行速度
2010-09-27 15:58 967受此文启发: 随想配置:更快的启动eclipse 性能优化从身 ... -
java快速排序算法
2010-08-10 20:38 1115java实现快速排序,好不容易,写下来吧 public ... -
tomcat性能调优
2009-09-28 14:23 1050在catalina.sh的开头export JAVA_HOME ... -
Tomcat常用调优技巧
2009-06-25 22:59 1250本文是就Tomcat 4为基础 ... -
数据库水平切分的实现原理解析
2009-06-22 16:12 1279最近论坛上关于数据库水平切割的文章写的很好,可以借鉴一下 第 ... -
优化代码的小技巧--读effect java有感
2009-01-06 15:31 4686工作一年有余,已经早已不能算菜鸟了,最近工作也比较清闲,也接近 ... -
提升JSP应用程序的七大绝招(好文推荐)
2008-03-26 15:56 1106你时常被客户抱怨JSP页 ...
相关推荐
标题中的“自己写的一个小工具,能将自己的电脑上的WEB发布到外网”表明这是一个自编程序,其功能是使得在局域网内的Web服务能够被外部互联网访问。这个过程通常涉及到了内网穿透技术,也就是所谓的NAT穿透,因为...
6. **报告生成**:生成测试报告,方便记录和分享测试结果。 在实际应用中,Modbus Poll对于验证设备的正确配置、确保系统稳定运行、排查通信问题等方面都非常有用。无论是新手还是经验丰富的工程师,都能通过这款...
标题中的“自己写的一个很简单的日历功能”表明这是一个个人开发的日历应用或者模块,可能是用编程语言实现的。从描述中的“博文链接”来看,作者在某技术社区分享了这个项目的实现细节,我们可以期待在博客中找到更...
dhcp_test_tool介绍MFC的DHCP服务器测试工具可用于测试 DHCP 服务器的性能。闲话其实我是一名 Linux 程序员 :) 我很久以前作为一名新开发人员完成了这个,所以它非常简单,但有点有用。 它诞生于 2007 年,据我所知...
6. **网络诊断工具**:可能包括网络连接测试工具,如ping、traceroute等,帮助用户检查网络连接状况,定位网络问题。 7. **备份与恢复工具**:这些工具可以备份系统设置、应用程序数据,甚至整个系统映像,以便在...
unittestreport框架是一款用于生成HTML测试报告的工具,它基于Python的unittest库,旨在提供更直观、易读的测试结果展示。在Python的自动化测试中,unittest是常用的单元测试框架,而unittestreport则增强了其报告...
总之,本文作为Robot Framework源代码阅读笔记的一部分,作者不仅分享了对Robot Framework的了解,还整理了众多与Python测试相关的库和工具,为我们展示了丰富的测试工具生态,为测试开发人员提供了宝贵的学习和参考...
Postman是一款广受欢迎的API(应用程序编程接口)测试工具,尤其在接口自动化测试领域中扮演着重要角色。它提供了一种直观、高效的方式来发送HTTP请求并解析响应数据,从而帮助开发者和测试人员验证接口的功能、性能...
8. **最佳实践与案例研究**:PPT可能会分享一些成功的自动化测试项目案例,以展示关键字驱动测试的实际应用和效果。 通过"有效实施自动化测试之框架-RRAFS.ppt"这份文档,你可以系统地学习关键字驱动自动化测试的...
这些工具都是Java开源社区的宝贵贡献,它们经过广泛测试,稳定性高,且有着丰富的文档和社区支持。在实际开发中,结合这些工具,开发者可以构建出高效、稳定的系统。例如,SmartUpload和FileUpload可以用于搭建安全...
VC6.0通用补丁2011的安装过程相对简单,只需下载解压后的压缩包,按照指示运行补丁程序,然后按照提示进行安装即可。安装完成后,无需重启计算机,可以直接打开VC6.0进行测试,体验修复后的各项改进。 四、注意事项...
我在天津市软件测试中心工作了7年,一直都在寻找不同软件的测试方法、测试工具的使用、测试流程及管理。所以,一直都非常关注软件测试方面的书,以便用它来指导我们测试业务的开展,同时对 于软件开发企业控制软件...
3. **成为性能测试专家:** 精通各种性能测试工具和技术,具备制定通用性能测试方案的能力,以满足不同产品的测试需求。 4. **转为产品经理:** 利用对产品的深入了解,转向产品经理岗位。这需要优秀的沟通能力和对...
虽然具体的实现方式因软件而异,但我们可以探讨一下这类工具可能包含的一些通用功能和涉及的技术知识点。 1. **用户界面设计**:桌面发泄小工具的吸引力在于其直观易用的界面。设计师会采用吸引人的图形元素和色彩...
LICEcap是一款高效且易于使用的屏幕录制工具,尤其适合那些需要快速捕捉屏幕动态并以GIF动画格式分享的用户。它的主要特点包括其轻量级的设计、简单的操作流程以及灵活的录屏区域选择功能。 1. **轻量级设计**:...
该系统乃本人本科毕业设计作品,拿来和大家分享,代码结构组织很简单。对于反编译出java源码还未能做到,主要是由于条件语句本人无法想出通用的反编译算法,不过对于class文件结构已经做了完整的分析,哪位仁兄如果...
标题“UVM 验证测试平台搭建简单示例(详细)”表明本文档是一个关于如何使用UVM(Universal Verification Methodology,通用验证方法学)来搭建一个简单的System Verilog测试平台的教程。UVM是一种流行于现代数字...
在接口自动化测试中,Python提供了丰富的库和工具,如`requests`和`unittest`,使得编写测试脚本变得简单。 2. `requests`库: 这是Python的一个HTTP客户端库,可以方便地发送GET、POST等HTTP请求。通过`requests....
本篇文章将深入探讨“通用Excel题库制作软件”的相关知识,旨在帮助用户了解如何利用这类软件高效地创建、管理和分享题库。 首先,我们要明确什么是Excel题库制作软件。这类软件通常基于Microsoft Excel,结合了其...