一、封装登录后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请求的更多相关文章

  1. “ping”命令的原理就是向对方主机发送UDP数据包,HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”

    Socket  是一套建立在TCP/IP协议上的接口不是一个协议 应用层:  HTTP  FTP  SMTP  Web 传输层:  在两个应用程序之间提供了逻辑而不是物理的通信(TCP  UDP) T ...

  2. Winform模拟post请求和get请求登录网站

    引言 最近有朋友问如何用winform模拟post请求,然后登录网站,稍微想了一下,大致就是对http报文的相关信息的封装,然后请求网站登录地址的样子.发现自己的博客中对这部分只是也没总结,就借着这股 ...

  3. (22)Ajax的基本使用(实现登录功能和局部刷新以及防止跨站请求伪造攻击)

    Ajax的作用 前后端分离的项目,需要交互,就要通过Ajax来完成交互 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即 ...

  4. Android-HttpURLConnection-Get与Post请求登录功能

    HttpURLConnection 在这请求方式是Java包中的: AndroidManifest.xml配置权限: <!-- 访问网络是危险的行为 所以需要权限 --> <uses ...

  5. Android-HttpClient-Get与Post请求登录功能

    HttpClient 是org.apache.http.* 包中的: 第一种方式使用httpclient-*.jar (需要在网上去下载httpclient-*.jar包) 把httpclient-4 ...

  6. Win7网上邻居提示未授予用户在此计算机上的请求登录类型解决办法

        内容简介 装了Win7之后很多人遇到这样的问题,网上邻居访问Win7的电脑时出现“未授予用户在此计算机上的请求登录类型”问题.打开“控制面板”--“管理工具”--“本地安全策略”--“本地策略 ...

  7. JS-DOM2级封装练习题--点击登录弹出登录对话框

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  8. windows 7 共享,未授予用户在此计算机上的请求登录类型

    刚刚重装了windows7,新下载的一个ghost版本,结果却不能共享,每次访问这台机器的共享都提示, 未授予用户在此计算机上的请求登录类型 这个情况好像是存在于win7访问win7,我用一台XP系统 ...

  9. 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)

    新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...

  10. 登录获取token,token参数关联至所有请求的请求体内

    问题描述: 有些系统接口判断用户是否登录,是校验登录接口成功后传的token值,也就是请求系统所有接口时,前端传参必带登录成功后接口返回的token,后台以此检验是否过期或是否有登录.所有接口都依赖登 ...

随机推荐

  1. JavaMaven【七、插件使用】

    配置pom.xml 配置在那个周期的那个阶段执行该插件的功能 上图是配置了使用插件source3.0.1,该插件的功能是打包源码 并配置了在package阶段后执行打包源码的操作jar-no-fork ...

  2. 第十章、random模块

    目录 第十章.random模块 第十章.random模块 #随机生成0-1之间的小数 import random print(random.random()) print(random.randint ...

  3. Linux:rm可不可以实现删除所有文件,除了demo文件

    方法1: shopt -s extglob #开启扩展通配符 rm -rf !(demo) #删除除了demo的文件 方法2: find /test -not -name "demo&quo ...

  4. Bootstrap常用的自带插件

    Bootstrap自带的那些常用插件. 模态框 模态框的HTML代码放置的位置 务必将模态框的HTML代码放在文档的最高层级内(也就是说,尽量作为 body 标签的直接子元素),以避免其他组件影响模态 ...

  5. JavaScript中foreach、map函数

    语法:forEach和map都支持2个参数:一个是回调函数(item,index,input)和上下文: •forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: ...

  6. TXNLP 20-33

    文本处理的流程 # encoding=utf-8 import jieba import warnings # 基于jieba的分词 seg_list = jieba.cut("贪心学院专注 ...

  7. swoole_process模拟耗时操作

    一例串行阻塞操作 <?php $start = time(); $tasklists = [ '/root/文档/longtale1.txt', '/root/文档/longtale2.txt' ...

  8. centos 6.5 解压 zip

    只查看 zip 文件内容而不解压 unzip -l filename.zip 解压到指定目录(不指定则为当前目录) unzip filename.zip -d /usr/file 压缩文件或目录为 z ...

  9. WPF显示数据库内容

    https://www.bilibili.com/video/av45138636?from=search&seid=17612939715579515358 以后用到会详细总结.

  10. 灰度图像--图像分割 Sobel算子

    学习DIP第44天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...