Https跳转到Http类型接口测试实践
作者:网络转载 发布时间:[ 2015/7/22 11:48:25 ] 推荐标签:软件测试 接口测试
日前,需要做一个接口测试,对象是一个web网站,登录的时候用ssl连接,登录进入系统后自动转成普通的http连接。
这种类型的web网站很常见,既保证了登录时的安全,也避免了整个系统使用ssl带来的系统性能下降的问题。
我们把整个访问过程分解如下:
访问web首页(http的): http://***.com/
登录用ssl连接: https://login.***.com;
再返回http: http://***.com/common/getInfo.do?***;
那进行接口测试应该怎么做呢?
初步尝试
一般一个http接口拿来,基本上直接用Httpclient行访问,进行接口测试。
inputurl="http://***.com/common/getEmployeeByDept.do?dept1=D032&dept2=D032002&dept3=D032010"
//创建HttpClientBuilder
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
//HttpClient
CloseableHttpClient httpClient = httpClientBuilder.build();
HttpGet httpGet = new HttpGet(inputurl);
返回信息如下:
{"code":"400","data":null,"msg":"请重新登录。"}
通过尝试说明此种方法不可行。需要先登录才行。
再去了解了下跳转机制,从Http>Https>Http的过程中,session是不会丢失的。是说用户登录时候通过http访问了首页,然后点击登录按钮,跳转到https协议下,输入用户名密码等信息,登录成功,在服务端session放入当前登录用户信息. 这种跳转方式不会出现session丢失情况。
而session的保持是通过cookie来维持的,是说服务端跟客户端的会话是通过浏览器每次提交的一个cookie来表示,这个cookie的key是JSESSIONID,value是session的id,所以需要获取登录时的cookie。
所以:
二度尝试
尝试通过Httpclient获取cookie, 但是因为http跳转过去的登录页链接过长(https://login.***.com/accounts/login/?uid=523f70387b3d42439905170931f34a65&next=/openid/%3Fopenid.ns%3Dhttp%253A%252F%252Fspecs.openid.net%252Fauth%252F2.0%26openid.claimed_id%.........,而且是变化的,放弃此种方法。
HttpHost httpHost = new HttpHost("localhost");
HttpGet httpGet = new HttpGet("/https/");
HttpResponse response = httpClient.execute(httpHost,httpGet);
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
HttpEntity entity = response.getEntity();
}
httpGet = new HttpGet("/https/index.jsp?cookie=write");
response = httpClient.execute(httpHost,httpGet);
FileWriter fw = new FileWriter("C:/cookie.txt");
//读取cookie并保存文件
List<Cookie> cookies = ((AbstractHttpClient) httpClient).getCookieStore().getCookies();
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11