- 主页 > 生活百科 > >
手撸了一个网络请求工具类,开发速度迅速提升了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;}}
推荐阅读
-
-
不应该管|人过四十,莫管2事,人过五十,莫管2人,老祖宗的忠告
-
哈尔滨新闻网|谁敢进我房子,我就砍死谁……丨嚣张“老赖”的房子被法院强制腾迁
-
心理学:当你脑中多了这几样东西,说明你已经被别人“洗脑”
-
小懒猫|张飞替刘备背黑锅,陶渊明被逼离开体制,因为这个官
-
-
民俗|百年的珍贵照片:感叹所有事物都是历史长河中的一瞬间
-
『历史档案de讲读』特朗普热心帮忙找药,结果尴尬了……,鲍里斯病重进ICU
-
-
明星|有种明星减肥叫释小龙,人越来越瘦,发际线却逐渐后移令人堪忧
-
「技术」7位华人成为美国国家科学院新晋院士,来看看他们研究什么
-
孙悟空|上古四大神猴,分别获得四大神器,孙悟空和金箍棒垫底!
-
“离婚”后的李东健,回应“娱乐圈椅子王”绰号,不会再公开恋情
-
-
小辰魔法师|美女穿搭:气质爽朗的牛仔裤美女,气质大方美丽迷人
-
-
男朋友睡觉的时候很喜欢抱着睡这是为啥,和男朋友一起抱着睡觉是什么感-
-
林肯汽车|“有钱的买奔驰,半有钱的买宝马”买这款的人,才是真有钱
-
上观新闻|检查下水道、铺上“红地毯”、备上干衣裳,应对暴雨沪上高考考点做足准备
-
纽约大学|我国“最烧钱”的2所大学,家里没矿谨慎报考,小康家庭止步!