- 主页 > 生活百科 > >
手撸了一个网络请求工具类,开发速度迅速提升了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;}}
推荐阅读
-
太白的西瓜|呆萌可爱的张艺凡,以后的路怎么走?,创3:干净温婉
-
网络|三星展示首个6G原型系统:速率是5G的50倍 预计2030年商用
-
-
-
-
上观新闻|为何百联盒马都在抢滩?新零售“时空转换”坪效翻番,做早餐既辛苦又薄利
-
大电竞LOL|SN 2:1 JDG Bin船长开局双杀梦幻起飞SN拿下赛点
-
-
穿搭|四套复原款唐制汉服,配色端庄又典雅,带你领略大唐盛世
-
关至|9月融券余额连破两关至850多亿元 中芯国际、恒瑞医药融券净卖出额居前
-
-
环球网|环球:美国的目标是中国最好像苏联一样崩溃、解体
-
《赛博朋克2077》成功登陆Linux:画面、帧率感人至深
-
-
-
成龙|成龙香港豪宅竟在工业区,从外观看不出是住宅!内部却有无数暗门
-
作文:学生因作文被批没有“正能量”自杀,我们作文评判标准该改了吧!
-
快科技美国空军完成不可思议壮举:不靠燃烧产生五倍于音速推力
-
-
有没有西安的朋友帮忙制作一个三天的游玩计划或者建议