用RestTemplate调取接口,取得返回数据,携带header,动态拼接url ,动态参数
记录我自己的工作
get 请求 ,携带 请求头 header (token)
url 根据参数 动态拼接
参数 放入 map 动态拼接
private String lclUrl = "http://xxx.xxxx.com/lcl";
private String TOKEN360FOB_URL = "http://xxx.xxxxxx.com/token?username={name}&password={password}";
public JSONObject get360fobToken() {
String json = restTemplate.getForObject(TOKEN360FOB_URL, String.class, username, password);
JSONObject json1 = JSONObject.fromObject(json);
return json1;
}
/**
* 拼箱
*
* @param departure
* @param departureDate
* @param destination
* @param destCountry
* @param lsps
* @param sortBy
* @param pageNum
* @param pageSize
* @return
*/
public JSONObject getLclFreight(String departure, String departureDate, String destination, String destCountry, String lsps, String sortBy, int pageNum, int pageSize) {
return this.getFclAndLcl(departure, departureDate, destination,
destCountry, lsps, sortBy, pageNum, pageSize, lclUrl);
}
/**
* 共同代码抽取
*
* @param departure
* @param departureDate
* @param destination
* @param destCountry
* @param lsps
* @param sortBy
* @param pageNum
* @param pageSize
* @param xxxUrl
* @return
*/
private JSONObject getFclAndLcl(String departure, String departureDate, String destination,
String destCountry, String lsps, String sortBy, int pageNum, int pageSize, String xxxUrl) {
JSONObject json = this.get360fobToken();
String t = json.getString("content");
String token = "Bearer " + t;
// 将token 放入请求头
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Authorization", token); //参数
Map<String, Object> uriVariables = new HashMap<String, Object>();
//拼接url
StringBuffer buffer = new StringBuffer();
buffer.append("?");
if (StringUtils.isNotBlank(departure)) {
buffer.append("departure={departure}").append("&");
uriVariables.put("departure", departure);
}
if (StringUtils.isNotBlank(departureDate)) {
buffer.append("departureDate={departureDate}").append("&");
uriVariables.put("departureDate", departureDate);
}
if (StringUtils.isNotBlank(destination)) {
buffer.append("destination={destination}").append("&");
uriVariables.put("destination", destination);
}
if (StringUtils.isNotBlank(destCountry)) {
buffer.append("destCountry={destCountry}").append("&");
uriVariables.put("destCountry", destCountry);
}
if (StringUtils.isNotBlank(lsps)) {
buffer.append("lsps={lsps}").append("&");
uriVariables.put("lsps", lsps);
}
if (StringUtils.isNotBlank(sortBy)) {
buffer.append("sortBy={sortBy}").append("&");
uriVariables.put("sortBy", sortBy);
} buffer.append("pageNum={pageNum}").append("&");
buffer.append("pageSize={pageSize}");
uriVariables.put("pageNum", pageNum);
uriVariables.put("pageSize", pageSize);
String url = xxxUrl + buffer.toString(); HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders); ResponseEntity<String> response =
restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class, uriVariables);
String resBody = response.getBody();
JSONObject temp = JSONObject.fromObject(resBody); return temp;
}
工作疑问:
可以用更简洁的方法 拼接 url 吗
个人qq : 332893400
AngDH.Lee
用RestTemplate调取接口,取得返回数据,携带header,动态拼接url ,动态参数的更多相关文章
- charles_01_打断点修改接口请求&返回数据
前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...
- Requests方法 -- 参数关联与JSESSION(上一个接口的返回数据作为下一个接口的请求参数)
前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅 ...
- Java封装接口统一返回数据模板
现在大多数都使用前后端分离开发模式,前端通过Ajax请求访问后台服务器,后台返回JSON数据供前端操作,这里编写一个统一返回数据模板类,方便日后操作 public class R extends Ha ...
- PHP开发APP接口之返回数据
首先说明一下客户端APP通信的格式 1.xml:扩展标记语言(1.用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,xml格式统一,跨平台和语言,非常适合数据传输和通信,早已 ...
- C#调用sap接口及返回数据到sap
public class SapClass { /// <summary> /// /// </summary> /// <param name="fphm&q ...
- 远程带参数POST访问接口,返回数据
1. string token = GetRequest.GetString("token"); int customer_id = GetRequest.GetInt(" ...
- 关于 ajax 动态返回数据 css 以及 js 失效问题(动态引入JS)
ajax 毕竟是异步的 所以动态加载出来的数据 难免遇到 css 或者 js 失效的问题,所以要动态加载 css ji等文件了 1.公共方法 load //动态加载 js /css function ...
- python3乱码问题:接口返回数据中文乱码问题解决
昨天测试接口出现有一个接口中文乱码问题,现象: 1 浏览器请求返回显示正常 2 用代码请求接口返回数据中文显示乱码 3 使用的python3,python3默认unicode编码,中文都是可以正常显示 ...
- java 接口自动化测试之数据请求的简单封装
我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...
随机推荐
- 任务十:Flexbox 布局练习
任务目的 学习如何flex进行布局,学习如何根据屏幕宽度调整布局策略. 任务描述 需要实现的效果如效果图(点击打开)所示,调整浏览器宽度查看响应式效果,红色的文字是说明,不需要写在 HTML 中. 任 ...
- 【OBJC】数字转中文大写
博客园都不知道怎么外链图片…… - (void)numToString:(double)num{ ; NSMutableString *szChMoney = [[NSMutableString al ...
- android网络监听
http://blog.csdn.net/mxiaoyem/article/details/50857008 http://blog.csdn.net/ke1vin/article/details/5 ...
- 关于windows server 里Let's Encrypt续订的问题
引言 Let's Encrypt是什么就不详细说了,它是免费的https证书,优点就是免费,缺点就是每三个月就要自己续上.今天主要介绍的是续上有效期的环节. 1.安装certify 下载地址: htt ...
- ZT 设计模式六大原则(6):开闭原则
ZT 设计模式六大原则(6):开闭原则 分类: 设计模式 2012-02-27 08:48 24870人阅读 评论(72) 收藏 举报 设计模式扩展框架编程测试 定义:一个软件实体如类.模块和函数应该 ...
- U-Mail邮件群发:邮件营销最全建议
U-Mail专注于邮件营销平台研发工作多年了,服务企业数千家,拥有上万IP,在国内外基础设施建设上投资巨大,技术团队精湛.客服人员热情,赢 得了业界的好评和用户信任.有一些用户给我们发来邮件或来电咨询 ...
- 在Vue-cli项目中引入Bootstrap
(1)到bootstrap官网下载所需版本的bootstrap.zip文件. (2)将bootstrap.min.css以及bootstrap.min.js解压到assets文件夹,另外还需要将fon ...
- 51nod 1515 明辨是非 [并查集+set]
今天cb巨巨突然拿题来问,感觉惊讶又开心,希望他早日康复!!坚持学acm!加油! 题目链接:51nod 1515 明辨是非 [并查集] 1515 明辨是非 题目来源: 原创 基准时间限制:1 秒 空间 ...
- ListView实现分页加载(二)实现底布局
上一篇中,我们搭建好了一个Demo.没有阅读的可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866929.html 在这一篇中,我们将实现Lis ...
- BIND简易教程(3):DNSSec配置
目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置BIND简易教程(3):DNSSec配置 (本篇) DNSSec,有个半英半中的名字叫DNS安全扩展.说的好听一点, ...