- 浏览: 438889 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 1668标红 的是陌生单词 The Anatomy of a ... -
java性能优化的地方
2011-08-23 17:06 1078自己都懂,但是难的 ... -
如何定位OutOfMemory的根本原因
2011-07-19 17:39 1982自己最近做了一些关于工厂MES软件导致的OOM,比如avon, ... -
JVM调优新(转)
2010-09-29 10:11 12041. Heap设定与垃圾回收 ... -
jvm调优总结(江南白衣)
2010-09-28 16:02 18077月16日 JVM调优总 ... -
主题:优化JVM参数提高eclipse运行速度
2010-09-27 15:58 936受此文启发: 随想配置:更快的启动eclipse 性能优化从身 ... -
java快速排序算法
2010-08-10 20:38 1075java实现快速排序,好不容易,写下来吧 public ... -
tomcat性能调优
2009-09-28 14:23 1027在catalina.sh的开头export JAVA_HOME ... -
Tomcat常用调优技巧
2009-06-25 22:59 1220本文是就Tomcat 4为基础 ... -
数据库水平切分的实现原理解析
2009-06-22 16:12 1247最近论坛上关于数据库水平切割的文章写的很好,可以借鉴一下 第 ... -
优化代码的小技巧--读effect java有感
2009-01-06 15:31 4635工作一年有余,已经早已不能算菜鸟了,最近工作也比较清闲,也接近 ... -
提升JSP应用程序的七大绝招(好文推荐)
2008-03-26 15:56 1072你时常被客户抱怨JSP页 ...
相关推荐
dhcp_test_tool介绍MFC的DHCP服务器测试工具可用于测试 DHCP 服务器的性能。闲话其实我是一名 Linux 程序员 :) 我很久以前作为一名新开发人员完成了这个,所以它非常简单,但有点有用。 它诞生于 2007 年,据我所知...
我在天津市软件测试中心工作了7年,一直都在寻找不同软件的测试方法、测试工具的使用、测试流程及管理。所以,一直都非常关注软件测试方面的书,以便用它来指导我们测试业务的开展,同时对 于软件开发企业控制软件...
该系统乃本人本科毕业设计作品,拿来和大家分享,代码结构组织很简单。对于反编译出java源码还未能做到,主要是由于条件语句本人无法想出通用的反编译算法,不过对于class文件结构已经做了完整的分析,哪位仁兄如果...
软件分享 操作简单 把您的装机方案分享给您的好友。为好友指点"迷津"。打造 通用的装机方案,分享给N多电脑,实现一键轻松装机。 软件收藏 查找方便 选择收藏您所喜欢的常用软件,能及时关注最新信息,并 可添加到...
今晚下小生花了几个小时,分析了ACER还原分区的目录内容后,决定自己动手改造,最后发现自己定义自己还原盘原来是这么简单的,下面就与大家分享下具体的操作过程. 使用本:ACER Aspire 1810TZ Vista 版,一键恢复系统...
一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...
WriteBoard项目地址::创作目的书写板的创作起源说来话长,小组正在写的一门生成DSL的解释器,用于生成各种标记语言的Parser,需要一个简洁易用的前端,这个书写板即组合开源社区现有的工具,形成一个简洁通用的文档...
今天小编要给大家介绍一款专业好用的网络推广软件——流量精灵。流量精灵采用基于IE内核自主研发的嵌入式...3. 优化测试工具,表现最真实效果; 4. 新增微信、手机QQ、手机QQ空间内置浏览器类型; 流量精灵的截图
百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对...
自己做的乐优商城的XMIND文件,学习分享下。乐优商城 搭建父工程 pom.xml 添加依赖 springCloud mybatis启动器 通用Mapper启动器 mysql驱动 分页助手启动器 FastDFS客户端 其他配置 构建设置 环境设置 ...
5)如何在不能设置IIS的情况下,最大限度的提升网站性能,让你的网站的yslow或page speed这两个工具的测试下拿高分; 6)CommunityServer中的Ajax功能,后由我对其改进完善,使其使用更加简洁; 7)如何在你的网站中...
带有CI的通用微服务 这是我在考虑CI / CD的情况下构建微服务的推荐方法的第一步。 当然,这里的重点是CI。 该项目将不会分享有关如何制作CD的知识。 对于那些初次这样做的人,请继续阅读。 我考虑了最新的库和SDK...
程序员面试刷题的书哪个好我的笔记 ...基准测试工具。 : 用自然语言制作正则表达式的 Javascript 库。 :没有数据挖掘的Chrome。 :窗口切换器和应用程序启动器。 :使用 React 和 Node.js 创建的您自己的 wiki
自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! 将 ASP.NET 2.0 应用程序服务...
ShopNC本地生活系统开发团队尽量使得安装步骤简单方便,但仍然可能会用到一些常用的工具软件。如果 您通过网络将 ShopNC本地生活系统上传到服务器上,您将可能需要一个 FTP 客户端软件.通过您的服务器 FTP账号,...
17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 ...
16_通用链表库集成和测试 17_C提高课程_day05-day07_知识体系梳理_传智扫地僧 源码及文档 第二部分 C++基础目录 01_C++基础课程的安排和需要持之以恒的学习态度 02_简单的C++程序helloworld 03_用面向过程和面向...
│ 千锋Python教程:01.python概述和工具的安装.mp4 │ 千锋Python教程:02.数据存储与二进制操作1.mp4 │ 千锋Python教程:03.数据存储与二进制操作2.mp4 │ 千锋Python教程:04.第一个Python程序与注释及输入输出....
Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同时又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的...