用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方法进 ...
随机推荐
- Django—XSS及CSRF
一.XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往W ...
- MyEclipse打开JSP文件报"Failed to create the part's controls"解决方法汇总
有时候,打开别人的开发环境中导过来的项目的JSP文件,会出现“Failed to create the part's controls”的错误! 解决的方法有: 方法1:关闭myeclipse的jsp ...
- sourcemaps and persistent modification in chrome
在现代web开发中,往往我们会借助类似sass,less之类的预处理器来加快开发进度,但是随着项目的增大,你可能无法清楚明确地知道一个css rule到底是从哪个less/scss文件中编译出来的,这 ...
- 学会利用Ionic官网文档
和任何新技术一样,ionic也提供了详细的官方文档说明.网址如下: http://ionicframework.com/docs/ 学会使用ionic控件 ionic提供了大量优秀的高性能的仿原生控件 ...
- javascript 随机数 生成 n-m
例子:生成800-1500的随机整数,包含800但不包含1500 代码如下: 1500-800 = 700 Math.random()*700 var num = Math.random()*700 ...
- sudo:*:command not found
原因:执行sudo后,sudo会根据visudo里面配置的secure_path来找寻命令,所以sudo尽量使用绝对路径 sudo bash-c "echo $PATH"也可以看到 ...
- 设置dedecms标签 [field:global.autoindex/] 初始值{class递增}
在{dede:arclist/}这个标签中有个[field:global.autoindex/],是从0开始自增,如果我们想自定义一个数值,比如自定义从2开始.那么就可以写成下面代码: [field: ...
- C语言编译器,写给萌新们看看。
就我已经经历过的大学课程,仿佛每一门计算机的专业课程的开头,都是在介绍计算机发展的历史,和大名鼎鼎的冯诺依曼结构. 譬如C语言,比较水的计算机导论,c++,数据结构,计算机组成原理,甚至是Linux实 ...
- tp 查询数据库时报错 A non well formed numeric value encountered
在database.php中配置或修改 'datetime_format' => false,
- slf4j-log4j12-1.5.8.jar有什么用
slf4j是hibernate的日志接口,通常我们用log4j.jar来实现hibernate的记录日志功能,slf4j-log4j.jar可以看成是用来把slf4j的接口转换成适合log4j的接口的 ...