SoapUI管理Cookie

来源:互联网 发布:制作透明头像软件 编辑:程序博客网 时间:2024/06/05 04:32

SoapUI管理Cookie,有好种方式


1,用脚本发送http+cookie

2,HTTP步骤加hearder

3,soapUI插件

4,改造soapUI源码,支持保持cookie


一,跟踪

找原因真的好麻烦,打不了断点嘛.

       1, jvisualvm 安装btrace插件,

  2,监控http执行zhan,

 @OnMethod    (    clazz       = "org.apache.http.impl.client.CloseableHttpClient",    method      = "execute"    )    public static void Trace_exit    (    )    {        println( "jstack() is :" );        println( "[" );        jstack();        println( "]" );    }

org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java)org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.execute(HttpClientSupport.java:233)com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.execute(HttpClientSupport.java:323)com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.submitRequest(HttpClientRequestTransport.java:295)com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:225)com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:119)java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)


说起来简单,这可搞了几个小时

看来关键的还是以下这个类:

com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport

反编译以后找到一段神奇的代码:


public static BasicHttpContext createEmptyContext() {    BasicHttpContext httpContext = new BasicHttpContext();   // BasicCookieStore cookieStore = new BasicCookieStore();    //httpContext.setAttribute("http.cookie-store", cookieStore);    return httpContext;}

果然这个方法被它调用了:

com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport.sendRequest()

SoapUI原来是设计是对REST和SOAP优化的,不需要cookie,而且理论上每个http请求是独立的,所以清理cookie


现在用反编译出的class替换它就以了.

以下groovy脚本,可以用来验证cookie还存在,也可以用来清理cookie

import com.eviware.soapui.impl.wsdl.support.http.*;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.CookieStore;   // ht.execute();    HttpGet get=new HttpGet("http://www.baidu.com");    HttpGet get2=new HttpGet("http://www.baidu.com");  //  CookieStore ck;        HttpClientSupport ht=new HttpClientSupport();        HttpClientSupport.getHttpClient().execute(get);        CookieStore ck= HttpClientSupport.getHttpClient().getCookieStore();     //   HttpClientSupport.getHttpClient().execute(get2);        CookieStore ck2= HttpClientSupport.getHttpClient().getCookieStore();

清理脚本(没验证): 

HttpClientSupport.getHttpClient().setCookieStore(<span style="color: rgb(128, 128, 128); font-family: Menlo; font-size: 12pt; background-color: rgb(43, 43, 43);">new BasicCookieStore());</span>


提供下下载

http://download.csdn.net/detail/gogcc/9149011

(需要手工操作)

0 0
原创粉丝点击