用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方法进 ...
随机推荐
- iDempiere 使用指南 开发环境搭建
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...
- hive中的bucket table
前言 bucket table(桶表)是对数据进行哈希取值,然后放到不同文件中存储 应用场景 当数据量比较大,我们需要更快的完成任务,多个map和reduce进程是唯一的选择.但是如果输入文件是一个的 ...
- IE8下的怪异模式
使用DWZ框架,老是出现点击button后在winxp IE8下出现新页面,经过检查后发现IE8下submit后,return false就不行了,必须使用window.event.returnVal ...
- js 显示 base64编码 的二进制流 图片
Data URI scheme.Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.比如上面那串字符,其实是一张小图片,将这些字 ...
- 关于YARN的基本结构
- 【NLP_Stanford课堂】文本分类2
一.实验评估参数 实验数据本身可以分为是否属于某一个类(即correct和not correct),表示本身是否属于某一类别上,这是客观事实:又可以按照我们系统的输出是否属于某一个类(即selecte ...
- java Maven项目右键没有maven菜单项的解决方案!
修改项目.project文件,确保有maven2Builder和maven2Nature2个标签: <?xml version="1.0" encoding="UT ...
- Mysql学习---SQL语言的四大分类
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHE ...
- Google Colab 免费的谷歌GPU for deep learning
Who wants to use a free GPU for deep learning?Google Colab is a free cloud service and now it suppor ...
- ZT JAVA WeakReference
JAVA WeakReference 分类: JAVA 2012-08-28 16:08 305人阅读 评论(0) 收藏 举报 javareferencehashmapcacheclassnull 在 ...