一、封装登录后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. mysql 设置服务器的MySQL允许远程访问/外网访问

    设置服务器的MySQL允许远程访问/外网访问 https://blog.csdn.net/weixin_34232363/article/details/85889037

  2. deep_learning_RNN序列模型

    吴恩达<深度学习-序列模型>1 --循环序列模型:https://blog.csdn.net/weixin_41043240/article/details/79415134

  3. C语言-数字字符串转换成这个字符串对应的数字(十进制、十六进制)

    数字字符串转换成这个字符串对应的数字(十进制.十六进制) (1)数字字符串转换成这个字符串对应的数字(十进制) 要求:这个字符串参数必须包含一个或者多个数字,函数应该把这些数字转换为整数并且返回这个整 ...

  4. 卸载TensorFlow

    卸载TensorFlow 1.先用pip3 list查看安装了那些TensorFlow,一般只有两个,另一个是TensorBoard 2.执行命令卸载 sudo apt remove --purge ...

  5. 运行TensorFlow代码时报错

    运行TensorFlow代码时报错 错误信息ImportError: libcublas.so.10.0: cannot open shared object file 原因:TensorFlow版本 ...

  6. CUDA C编程——NO.1

    CUDA C编程 啥玩意是CUDA? CUDA® is a parallel computing platform and programming model invented by NVIDIA. ...

  7. mongodb单机搭建

    参考网站:http://www.runoob.com/mongodb/mongodb-linux-install.html 1.下载 https://www.mongodb.com/download- ...

  8. H5小程序不同页面之间通讯解决方案

    小程序做开发的时候难免需要不同页面之间的通讯,比如首页打开新的页面搜索获取结果返回到首页,不同tab页面之间的数据交互等等.于是做了以下总结 打开新的页面可以通过 navigator 组件来实现,通过 ...

  9. hive中的 lateral view

    lateral view用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合. 一个简单的例子,假设我们有一张表pageAds,它有 ...

  10. Flyway详解以及Springboot集成Flyway(转)

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Bu ...