`
aa8945163
  • 浏览: 275195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

http通用请求测试

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

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

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


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;
}
}
分享到:
评论

相关推荐

    通用接口测试平台

    在使用这个通用接口测试平台时,用户可能需要编写测试用例,定义请求的URL、HTTP方法(GET、POST、PUT、DELETE等)、请求头、参数和期望的响应。测试脚本通常会以结构化的形式(如YAML或JSON)存储,便于管理和维护...

    jmeter接口测试-http接口请求

    ### JMeter接口测试详解:HTTP接口请求 #### 一、基本概念与原理 在软件开发过程中,接口测试是一项重要的质量保证活动,它主要用于验证不同系统或模块之间交互的数据正确性。JMeter是一款开源的压力测试工具,它...

    Web Service通用客户端和测试工具

    本主题将深入探讨Web服务的通用客户端和测试工具,特别关注Java环境中的实现。 1. **Web服务客户端**:Web服务客户端是使用Web服务的程序,它可以请求并接收服务端提供的功能。在Java中,JAX-WS(Java API for XML ...

    webService通用客户端测试工具

    6. **调试和测试**:用户可以通过反复调整参数和请求,进行功能测试、性能测试、压力测试等,以确保Web服务的正确性和稳定性。 7. **保存和导出**:一些高级的测试工具还支持保存测试用例,方便重复执行和团队共享...

    RESTClient HTTP请求模拟器

    RESTClient-全能HTTP请求模拟器-HTTP请求测试工具

    soapUI测试介绍

    需要注意的是,在选择测试步骤类型时,某些情况下只能选择特定的类型(如RESTTestRequest),而非通用的HTTP测试请求(HTTPTestRequest)。 在进行接口测试时,通常会涉及到发送HTTP请求到服务器,并检查返回的响应...

    web service通用客户端和测试工具

    Web服务通用客户端和测试工具是开发和调试Web服务不可或缺的一部分。这些工具使得开发者能够方便地访问、测试和验证Web服务接口的功能,确保它们按照预期工作。 在Web服务的世界里,XML(eXtensible Markup ...

    开发通用工具 加密解密 post get请求等等

    - **跨平台支持**:考虑到不同操作系统和语言环境,通用工具应考虑跨平台兼容性,例如使用Python的`requests`库或Node.js的`axios`库可以方便地处理HTTP请求。 5. **调试与测试**: - **Debug模式**:在软件开发...

    httpclient测试请求方法

    标题中的“httpclient测试请求方法”指的是使用Apache HttpClient库进行HTTP请求的方法。HttpClient是一个功能强大的客户端编程工具包,它允许开发者构建复杂的HTTP客户端应用程序。在本文中,我们将深入探讨...

    Python-Httprunner是一个面向HTTPS协议的通用测试框架

    Httprunner作为一个通用测试框架,不仅适用于功能测试,还能够胜任性能测试、在线监控和持续集成等任务,大大提升了开发效率和测试覆盖率。 Httprunner的核心特性包括: 1. **易读易写的测试脚本**:通过YAML或...

    springmvc ssh通用的junit测试样例

    在Spring MVC中,可以使用`MockMvc` API来模拟HTTP请求并测试控制器行为,而无需实际运行服务器。 `SSH` 框架组合了三个组件:Struts2作为前端控制器,Spring作为依赖注入容器,Hibernate作为持久层解决方案。在SSH...

    java写的Webservice通用测试工具

    Java编写的Webservice通用测试工具是一种实用的软件应用程序,它允许开发者和系统管理员方便地测试和验证Web服务接口的功能和性能。这个工具基于Java Swing框架构建,提供了图形用户界面(GUI),使得非程序员也能...

    Go-FBender-用于通用网络协议的负载测试命令行工具

    **Go-FBender:通用网络协议的负载测试命令行工具** Go-FBender是一个由Go语言编写的高效、轻量级的命令行工具,专门设计用于执行通用网络协议的负载测试。它允许用户对各种网络服务进行压力测试,评估其在高并发...

    互联网开发|通用调试工具(http请求测试,参数签名,RSA加解密,google验证器,js简单混淆,sql格式化,批量修改文件名)等)

    互联网开发工作中,经常需要一些辅助处理,例如:http接口访问测试,参数名排序/签名计算,加密解密,编码解码,替换短信验证的google验证器调试,js简单混淆,cmd指令程序运行,批量生成某种语句指令,生成RSA秘钥对,...

    php通用服务器网速测试源代码

    8. **并发测试**:对于更复杂的测试,可以考虑并行执行多个测试请求,以模拟多用户同时访问的情况,这样可以更准确地评估服务器在高负载下的性能。 9. **性能优化**:在编写测试代码时,应考虑性能优化,例如减少...

    cpp-TMemter是一个通用的服务器程序压力测试工具

    **TMemter:通用服务器程序压力测试工具** TMemter是一款专门为C++开发的服务器程序压力测试工具,其设计目标是模拟大规模并发用户请求,以此评估服务器在高负载环境下的性能和稳定性。在进行系统优化或者上线前的...

    不同web服务器之间采用http发送请求以及处理返回数据

    另外,Postman是一款强大的API测试工具,支持创建复杂的HTTP请求,查看响应数据,甚至自动化测试。 至于参考的类文件与lib,这些通常包含实现特定功能的代码库或库文件。例如,如果你在处理HTTP请求时使用了Python...

Global site tag (gtag.js) - Google Analytics