- 主页 > 生活百科 > >
手撸了一个网络请求工具类,开发速度迅速提升了300%( 二 )
- 最后,我们来做一下单元测试,使用案例如下,接口api还是基于上篇文章提供的服务
@RunWith(SpringRunner.class)@SpringBootTestpublic class HttpControllerJunit {@Autowiredprivate HttpTemplate httpTemplate;/*** get请求测试*/@Testpublic void testGet(){//请求地址String url = "http://localhost:8080/testGet";//发起请求,直接返回对象ResponseBean responseBean = httpTemplate.get(url, createHeader("get"), ResponseBean.class);System.out.println(responseBean.toString());}/*** get请求测试,restful风格*/@Testpublic void testGetByRestFul(){//请求地址String url = "http://localhost:8080/testGetByRestFul/{1}";//发起请求,直接返回对象(restful风格)ResponseBean responseBean = httpTemplate.get(url, createHeader("testGetByRestFul"), ResponseBean.class, "张三");System.out.println(responseBean.toString());}/*** 模拟表单提交,post请求*/@Testpublic void testPostByForm(){//请求地址String url = "http://localhost:8080/testPostByFormAndObj";//表单参数Map<String, Object> paramMap = new HashMap<>();paramMap.put("userName", "唐三藏");paramMap.put("userPwd", "123456");//发起请求ResponseBean responseBean = httpTemplate.postByFrom(url, createHeader("testPostByFormAndObj"), paramMap, ResponseBean.class);System.out.println(responseBean.toString());}/*** 模拟JSON提交,post请求*/@Testpublic void testPostByJson(){//请求地址String url = "http://localhost:8080/testPostByJson";//入参RequestBean request = new RequestBean();request.setUserName("唐三藏");request.setUserPwd("123456789");//发送post请求,并打印结果,以String类型接收响应结果JSON字符串ResponseBean responseBean = httpTemplate.postByJson(url, createHeader("testPostByJson"), request, ResponseBean.class);System.out.println(responseBean.toString());}/*** 重定向,post请求,json方式提交*/@Testpublic void testPostByLocation(){//请求地址String url = "http://localhost:8080/testPostByLocation";//入参RequestBean request = new RequestBean();request.setUserName("唐三藏");request.setUserPwd("123456789");//用于提交完成数据之后的页面跳转String uri = httpTemplate.postForLocation(url,createHeader("testPostByLocation"), request);System.out.println(uri);}/*** put请求,json方式提交*/@Testpublic void testPutByJson(){//请求地址String url = "http://localhost:8080/testPutByJson";//入参RequestBean request = new RequestBean();request.setUserName("唐三藏");request.setUserPwd("123456789000");//模拟JSON提交,put请求ResponseBean responseBean = httpTemplate.put(url,createHeader("testPutByJson"), request, ResponseBean.class);System.out.println(responseBean.toString());}/*** delete请求,json方式提交*/@Testpublic void testDeleteByJson(){//请求地址String url = "http://localhost:8080/testDeleteByJson";//模拟JSON提交,delete请求ResponseBean responseBean = httpTemplate.delete(url,createHeader("testDeleteByJson"), ResponseBean.class);System.out.println(responseBean.toString());}/*** 文件上传,post请求*/@Testpublic void uploadFile(){//需要上传的文件String filePath = "/Users/panzhi/Desktop/Jietu20220205-194655.jpg";//请求地址String url = "http://localhost:8080/upload";//提交参数设置MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();param.add("uploadFile", new FileSystemResource(new File(filePath)));//服务端如果接受额外参数,可以传递param.add("userName", "张三");ResponseBean responseBean = httpTemplate.uploadFile(url, createHeader("uploadFile"), param, ResponseBean.class);System.out.println(responseBean.toString());}/*** 小文件下载* @throws IOException*/@Testpublic void downloadFile() throws IOException {String userName = "张三";String fileName = "f9057640-90b2-4f86-9a4b-72ad0e253d0d.jpg";//请求地址String url = "http://localhost:8080/downloadFile/{1}/{2}";//发起请求,直接返回对象(restful风格)byte[] stream = httpTemplate.downloadFile(url, createHeader("downloadFile"), userName,fileName);// 将下载下来的文件内容保存到本地String targetPath = "/Users/panzhi/Desktop/"+ fileName;Files.write(Paths.get(targetPath), Objects.requireNonNull(stream, "未获取到下载文件"));}/*** 大文件下载* @throws IOException*/@Testpublic void downloadBigFile() {String userName = "张三";String fileName = "f9057640-90b2-4f86-9a4b-72ad0e253d0d.jpg";String targetPath = "/Users/panzhi/Desktop/"+ fileName;//请求地址String url = "http://localhost:8080/downloadFile/{1}/{2}";//对响应进行流式处理而不是将其全部加载到内存中httpTemplate.downloadBigFile(url, createHeader("downloadBigFile"), clientHttpResponse -> {Files.copy(clientHttpResponse.getBody(), Paths.get(targetPath));return null;}, userName, fileName);}/*** 自定义请求头部* @param value* @return*/private Map<String, String> createHeader(String value){Map<String, String> headers = new HashMap<>();headers.put("token", value);return headers;}}
推荐阅读
-
-
重磅!爱玛加盟“恒星伙伴计划”达成战略合作,星恒&爱玛共创豪锂新时代
-
穿搭|54岁蒋雯丽一点不服老,波点裙穿出少女感,复古短发也轻松驾驭
-
幽默搞笑段子集锦|她父母对我特不满意,幽默笑话:第一次被女友拽去她家时
-
正卫说生活|竟发明出一种奇怪的文字,康熙帝的这个儿子不一般
-
-
张凌赫|白鹿张凌赫将同床合宿录综艺,男方粉破大防,公开艾特公司辱骂
-
顶风作案野心炸裂的赵薇,罪行不止亲日辱华,如今现状大快人心
-
就【福建泉州:老太上错公交拐杖暴打司机 司机被打哭】一事,警察一般会咋处理
-
同学聚会遇前妻,得知家庭困难,借她10万,在见面,愣了
-
设计师|晒晒我最得力的15个清洁工具,房子住了5年,每天干干净净
-
ZAKER生活|满羁绊皇家女警最低前三!,云顶之弈10.14:“赌狗”烂分阵容
-
-
首席娱司令1|黄晓明懒理谣言深夜买醉,频频被传与Angelababy离婚
-
二三里资讯西安:20个常见病忌口问题,一次说清!你很可能“忌”错了
-
「黄山」7岁女孩踩凳子炒菜,照顾患癌奶奶和5岁弟弟:我要快快长大,这样就不用踩凳子
-
华为云知识计算解决方案获首批“知识图谱产品认证证书”
-
宇宇爱编发|拿“蛇环”当配饰是什么想法,戚薇不愧是时尚达人,配饰更耀眼
-
小土豆侃球|皇马最快下轮夺冠,四大皆空?巴萨不仅丢人还要丢冠军
-