HttpClient接口测试之会话保持

    HttpClient4.X自带会话保持功能,使用同一个HttpClient未关闭的连接即可保持登陆会话,如果多个HttpClient想要使用一个登陆会话,则需要保存会话信息,其中一种方法是使用HttpClientContext。
 
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
 
import com.test.tools.Regular;
 
public class HttpClientTest {
 
        String loginUrl = "http://**.***.com/user/login.do";
        private static HttpContext localContext = new BasicHttpContext();
        private static HttpClientContext context = HttpClientContext.adapt(localContext);
 
        @Test
        public void Test() throws Exception {
               CloseableHttpClient httpClient = HttpClients.createDefault();
 
               try {
                       // 模拟表单
                       List<NameValuePair> params = new ArrayList<NameValuePair>();
                       params.add(new BasicNameValuePair("username", "admin"));
                       params.add(new BasicNameValuePair("password", "admin"));
                       UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "UTF-8");
                       
                       HttpPost httpPost = new HttpPost(loginUrl);
                       httpPost.setEntity(entity);
                       // 将HttpClientContext传入execute()中
                       CloseableHttpResponse response = httpClient.execute(httpPost, context);
 
                       try {
                               HttpEntity responseEntity = response.getEntity();
                               System.out.println(EntityUtils.toString(responseEntity));
                               
                       } finally {
                               response.close();
                       }
               } finally {
                       httpClient.close();
               }
               
 
               CloseableHttpClient httpClient2 = HttpClients.createDefault();
 
               try {
                       //进入首页
                       HttpGet httpGet = new HttpGet("http://**.***.com/front/investmentList.html");
                       // 设置相同的HttpClientContext
                       CloseableHttpResponse response = httpClient2.execute(httpGet, context);
                       try {
                               HttpEntity entity = response.getEntity();
                               System.out.println("**************************");
                               String aString =EntityUtils.toString(entity);
                               System.out.println(aString);
                               //正则提取响应信息中的用户名
                               String bsString = "loginName = \"(.+?)\"";
                               Regular regular = new Regular(); 
                               System.out.println(regular.getRegular(aString, bsString));
 
                       } finally {
                               response.close();
                       }
               } finally {
                       httpClient2.close();
               }
 
        }
}
通过这种方式可以进行接口测试,也可以加入断言事务,添加多线程并发进行接口性能测试。

HttpClient接口测试之会话保持的更多相关文章

  1. SoapUI接口测试之实战运用操作(五)

    SoapUI接口测试之实战运用操作(五)

  2. WebAPI接口测试之matthewcv.WebApiTestClient

    WebAPI接口测试之matthewcv.WebApiTestClient matthewcv.WebApiTestClient 1.安装matthewcv.WebApiTestClient包 打开v ...

  3. 老李分享:接口测试之jmeter

    老李分享:接口测试之jmeter   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.移动端自动化测试很多人把他仅仅理解成appu ...

  4. SoapUI SoapUI接口测试之编码设置

    SoapUI接口测试之编码设置 by:授客 QQ:1033553122 问题描述: 实际测试过程中发现,SoapUI提交后的数据,在数据库中查看数据值存储,发现是乱码,如下图: 查找原因,show c ...

  5. SoapUI 接口测试之post提交本地数据文件

    SoapUI接口测试之post提交本地数据文件 by:授客 QQ:1033553122 本文主要是针对用SoapUI POST提交本地数据文件的方法做个简单介绍 举例: 文件同步接口 接口地址:htt ...

  6. API Test Postman接口测试之高级篇2

    API Test  Postman接口测试之高级篇2 一.继承父类的设置: 二.导出及导入: 三.分享文档: 四.发布接口文档: 五.常用脚本: 右边框选的是一些常用的脚本,postman提供的,可以 ...

  7. API Test Postman接口测试之高级篇1

    API Test  Postman接口测试之高级篇1 一.postman中的请求参数简介: 1.请求参数简介: 点击params下面会出现key,value等信息,这里填写的会自动追加在url地址后面 ...

  8. python接口测试之mock(二)

    上一篇对mock-server已经做了初步的介绍,今天这里继续接着之前的介绍进行,我们先看之前的mock-server部分,之前编写了一个登录的mock,具体json文件见如下的内容: 小王子1110 ...

  9. 接口测试之HttpClient

    HttpClient使用详解   Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客 ...

随机推荐

  1. IOS-细节错误

    当页面显示时一直奔溃,错误提示-[UICachedDeviceWhiteColor pointSize]: unrecognized selector sent to instance 原因是设置导航 ...

  2. DSET收集ESXi硬件日志

    1.Open DSET CLI with administrator mode C:\Windows\system32>dellsysteminfo -s 10.125.1.xxx -u roo ...

  3. JSON转Dictionary

    方法很简单,留作以后使用. System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Scrip ...

  4. Oracle 存储过程 split 代码实现

    实现 字符串分割, 算法 如下: 算法 1: DECLARE remove_column myvarray_list; x ); sub ); i NUMBER; j NUMBER; c NUMBER ...

  5. [原]CentOS 6.5 上安装 MySQL 5.6

    参考文档: http://dev.mysql.com/doc/refman/5.6/en/linux-installation-yum-repo.html 1. 下载 rpm 文件:wget http ...

  6. 解析JDK 7的动态类型语言支持

    http://www.infoq.com/cn/articles/jdk-dynamically-typed-language

  7. NET映射导致的应用无法访问

    应用环境 IIS 数据库  oracle11G 服务器 windwos2003 企业版 周一早上刚到,听到业务部门的人反应,集团的扫码抢系统登陆不上了,没办法进行出入库操作,大批货物在仓库堆积,承运车 ...

  8. mysql常用单行函数

    一.大小写控制函数 LOWER(str)    将str的值全部置为小写字母 select LOWER('ABC'); --结果: LOWER('ABC') abc UPPER(str)    将st ...

  9. ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)

    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...

  10. C++注意

    断言assert是仅在Debug版本起作用的宏,它用于检查“不应该”发生的情况. 在函数的入口处,使用断言检查参数的有效性(合法性). 如果程序在assert处终止了,并不是说含有该assert的函数 ...