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. javascript介绍

    1.javascript的简介 1.1javascript的特点 1.安全性(不允许方问本地硬盘),它可以做的是信息的动态交互. 2.跨平台.(只要是可以解释js的浏览器都可以执行,与平台无关) 1. ...

  2. correlation filters in object tracking2

    http://www.cnblogs.com/hanhuili/p/4281077.html Correlation Filter in Visual Tracking系列二:Fast Visual ...

  3. 从数据库中导出excel报表

    通常需要将后台数据库中的数据集或者是其他列表等导出excel 报表,这里主要引用了Apose.cells dll 类库, (1)直接上主要代码: protected void txtExport_Cl ...

  4. HTML5常用的方法

    1.html禁止手机页面放大缩小 在页面head中加入<meta name="viewport" content="width=device-width, init ...

  5. 待研究:insert客商账户触发器增加条件提示为空

    增加客商时候重名不给保存,增加修改条件提示找不到

  6. 传入url地址请求服务器api,浏览器显示图片

    @RequestMapping("/proxyImage") public void proxyImage(HttpServletRequest request, HttpServ ...

  7. STM32 USB转串口驱动 Virtual COM Port Driver(V1.3.1)

    将stm32的USB口接到PC端后,PC端会要求安装一个STM32 USB Virtual COM Port Driver,然后就可以用串口调试助手对其操作了

  8. Caffe使用:如何将一维数据或其他非图像数据转换成lmdb

    caffe事儿真多,数据必须得lmdb或者leveldb什么的才行,如果数据是图片的话,那用caffe自带的convert_image.cpp就行,但如果不是图片,就得自己写程序了.我也不是计算机专业 ...

  9. [AS3.0] NetConnection.Connect.Rejected 解决办法

    以下是运用FMS录制视频的一段代码: package { import flash.display.Sprite; import flash.events.AsyncErrorEvent; impor ...

  10. 使用Dapper读取Oracle多个结果集

    Dapper对SQL Server支持很好,但对于Oracle有些用法不一样,需要自己进行特殊处理. 1.首先要自定义一个Oracle参数类 public class OracleDynamicPar ...