九、封装登录POST请求、登录后POST请求以及GET请求
一、封装登录后POST请求以及GET请求
/**
* 全局运行时环境参数管理器
*/
public static Map<String, String> BASE_GLOBAL_MAP;
全局运行时环境参数管理器:BASE_GLOBAL_MAP
/**
* 全局测试结果数据收集器
*/
public static JSONArray BASE_URI_COLLECTOR;
全局测试结果数据收集器:BASE_URI_COLLECTOR
/**
* 全局请求处理器
*/
public static UcRESTTemplate BASE_REST;
全局请求处理器:BASE_REST
/**
* 运行时日志文件路径
*/
public static String RUNTIM_FILE_PATH = ""; public static SalesRequestRunTimeVo lendRequest; public static CollectionRequestRunTimeVo collectionRequest;
运行时日志文件路径
import com.uc.qa.utils.encrypt.SJS;
import com.uc.qa.utils.map.TreeMap2MultiValueMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.testng.Reporter; import java.util.TreeMap; import static com.uc.qa.cases.assistant.BaseParameters.*; public class BaseRunner { final static Logger logger = LoggerFactory.getLogger(BaseParameters.class); /**
* 根据产品服务请求规则处理请求前的UTI
* @param map 原始请求参数
* @return MultiValueMap<String, Object> 处理后的请求报文体
*/
public static TreeMap<String, Object> dealWithUri(TreeMap<String, Object> map){
//secret(根秘钥)已在Login中获取到参数,BASE_GLOBAL_MAP为全局参数收集器
if (BASE_GLOBAL_MAP.get("product").equalsIgnoreCase("当前系统名字") && null != BASE_GLOBAL_MAP.get("secret")){
try {
//SJS在上一篇文章中已说明
map.put("sign", new SJS().getSJSInfo(map, BASE_GLOBAL_MAP.get("secret")));
} catch (Exception e) {
logger.error("当前执行产品【当前系统名字】请求加密过程处理失败");
e.printStackTrace();
}
}
return map;
} /**
* 发送 Rest Template 请求
* @param map 发送Rest请求前的UTI
* @param uri 发送Rest请求的目的接口
* @return ResponseEntity<String>响应报文体
*/
public static ResponseEntity<String> dealWithPost(TreeMap<String, Object> map, String uri) {
TreeMap2MultiValueMap treeMap2MultiValueMap = new TreeMap2MultiValueMap();
MultiValueMap<String, Object> body = treeMap2MultiValueMap.getMultiValueMap(dealWithUri(map));
//BASE_URI_CLLOCTOR为全局测试结果收集器
BASE_URI_COLLECTOR.add(BASE_GLOBAL_MAP.get(uri));
Reporter.log("Request URL is : " + BASE_GLOBAL_MAP.get("server") + BASE_GLOBAL_MAP.get(uri), true);
Reporter.log("Post Request Body is : " + body.toSingleValueMap().toString(), true);
final HttpEntity<?> request = new HttpEntity<>(body);
//server为域名,uri为接口名
ResponseEntity<String> responseEntity = BASE_REST.postEntity(BASE_GLOBAL_MAP.get("server") + BASE_GLOBAL_MAP.get(uri), request);
Reporter.log("Get Response : " + responseEntity.toString(), true);
return responseEntity;
} /**
* 发送 Rest Template Get 请求
* @param map 发送Rest请求前的UTI
* @param uri 发送Rest请求的目的接口
* @return ResponseEntity<String>响应报文体
*/
public static ResponseEntity<String> dealGetWithHeader(TreeMap<String, Object> map, String uri) {
MultiValueMap<String, Object> body = (new TreeMap2MultiValueMap()).getMultiValueMap(map);
BASE_URI_COLLECTOR.add(BASE_GLOBAL_MAP.get(uri));
Reporter.log("Request URL is : " + BASE_GLOBAL_MAP.get("server") + BASE_GLOBAL_MAP.get(uri), true);
Reporter.log("Post Request Body is : " + body.toSingleValueMap().toString(), true); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + collectionRequest.getToken());
final HttpEntity<?> request = new HttpEntity<>(body, headers);
ResponseEntity<String> responseEntity = BASE_REST.getEntity(BASE_GLOBAL_MAP.get("server") + BASE_GLOBAL_MAP.get(uri), request, map);
Reporter.log("Get Response : " + responseEntity.toString(), true);
return responseEntity;
} /**
* 发送 Rest Template Post 请求
* @param map 发送Rest请求前的UTI
* @param uri 发送Rest请求的目的接口
* @return ResponseEntity<String>响应报文体
*/
public static ResponseEntity<String> dealPostWithHeader(TreeMap<String, Object> map, String uri) {
TreeMap2MultiValueMap treeMap2MultiValueMap = new TreeMap2MultiValueMap();
MultiValueMap<String, Object> body = treeMap2MultiValueMap.getMultiValueMap(map);
BASE_URI_COLLECTOR.add(BASE_GLOBAL_MAP.get(uri));
Reporter.log("Request URL is : " + BASE_GLOBAL_MAP.get("server") + BASE_GLOBAL_MAP.get(uri), true);
Reporter.log("Post Request Body is : " + body.toSingleValueMap().toString(), true);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + collectionRequest.getToken());
final HttpEntity<?> request = new HttpEntity<>(body, headers);
ResponseEntity<String> responseEntity = BASE_REST.postEntity(BASE_GLOBAL_MAP.get("server") + BASE_GLOBAL_MAP.get(uri), request);
Reporter.log("Get Response : " + responseEntity.toString(), true);
return responseEntity;
} }
九、封装登录POST请求、登录后POST请求以及GET请求的更多相关文章
- “ping”命令的原理就是向对方主机发送UDP数据包,HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”
Socket 是一套建立在TCP/IP协议上的接口不是一个协议 应用层: HTTP FTP SMTP Web 传输层: 在两个应用程序之间提供了逻辑而不是物理的通信(TCP UDP) T ...
- Winform模拟post请求和get请求登录网站
引言 最近有朋友问如何用winform模拟post请求,然后登录网站,稍微想了一下,大致就是对http报文的相关信息的封装,然后请求网站登录地址的样子.发现自己的博客中对这部分只是也没总结,就借着这股 ...
- (22)Ajax的基本使用(实现登录功能和局部刷新以及防止跨站请求伪造攻击)
Ajax的作用 前后端分离的项目,需要交互,就要通过Ajax来完成交互 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即 ...
- Android-HttpURLConnection-Get与Post请求登录功能
HttpURLConnection 在这请求方式是Java包中的: AndroidManifest.xml配置权限: <!-- 访问网络是危险的行为 所以需要权限 --> <uses ...
- Android-HttpClient-Get与Post请求登录功能
HttpClient 是org.apache.http.* 包中的: 第一种方式使用httpclient-*.jar (需要在网上去下载httpclient-*.jar包) 把httpclient-4 ...
- Win7网上邻居提示未授予用户在此计算机上的请求登录类型解决办法
内容简介 装了Win7之后很多人遇到这样的问题,网上邻居访问Win7的电脑时出现“未授予用户在此计算机上的请求登录类型”问题.打开“控制面板”--“管理工具”--“本地安全策略”--“本地策略 ...
- JS-DOM2级封装练习题--点击登录弹出登录对话框
<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...
- windows 7 共享,未授予用户在此计算机上的请求登录类型
刚刚重装了windows7,新下载的一个ghost版本,结果却不能共享,每次访问这台机器的共享都提示, 未授予用户在此计算机上的请求登录类型 这个情况好像是存在于win7访问win7,我用一台XP系统 ...
- 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)
新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...
- 登录获取token,token参数关联至所有请求的请求体内
问题描述: 有些系统接口判断用户是否登录,是校验登录接口成功后传的token值,也就是请求系统所有接口时,前端传参必带登录成功后接口返回的token,后台以此检验是否过期或是否有登录.所有接口都依赖登 ...
随机推荐
- Linux监控服务并主动重启
Linux查询后台进程,如果没有进程号,则重启服务: #!/bin/sh basepath=$(cd ``; pwd) while true do procnum=`ps -ef|grep " ...
- arm交叉编译sudo-1.8.6p7
1.交叉编译 # tar -xvf sudo-1.8.6p7.tar.gz # cd sudo-1.8.6p7/ # mkdir build # ./configure --prefix=/home/ ...
- 修改虚拟机CentOS系统ip地址和主机名
按照教程安装了虚拟机但是未配置静态IP,所以导致IP地址经常变化,CRT,mysql等连接时经常出现问题. 所以修改虚拟机内CentOS系统的IP为静态IP. 一.查看当前网关 虚拟机-->[编 ...
- linux基础—课堂随笔04_文件查找和压缩
文件查找和压缩 文件查找 1.locate 这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进 ...
- Docker 运行ELK日志监测系统,汉化Kibana界面
1.ELK日志监控简介 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
- python 中pip配置清华源
anaconda配置镜像 Mac and Linux conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda ...
- WTL自定义控件:edit内容改变响应
头文件内容: BEGIN_MSG_MAP(myEdit) COMMAND_CODE_HANDLER_EX(EN_CHANGE, OnEnChange) END_MSG_MAP()4 void OnEn ...
- HDU 6050 - Funny Function | 2017 Multi-University Training Contest 2
/* HDU 6050 - Funny Function [ 公式推导,矩阵快速幂 ] 题意: F(1,1) = F(1, 2) = 1 F(1,i) = F(1, i-1) + 2 * F(1, i ...
- mysql优化(下)
优化SQL语句:(1)不要使用 select *(2)尽量在where字段上添加索引:(3)模糊查询中%前置不能使用索引,比如 like ‘%a’;(4)使用or语句时,两侧语句都有索引时才使 ...
- mysql的五大引擎跟优劣之分
MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MERGE.MEMORY(HEAP).EXAMPLE.ARCHIVE.CSV. · MEMORY存储引擎提供“内存中”表.ME ...