RestTemplate下载大文件(带参数post请求)demo

场景
  • 数据接口请求方式为post
  • 需要携带参数
  • 参数需要写在body内,而不是拼接url
  • 请求的数据或文件体积较大,不能全部存放在内存中
code
RestTemplate template = new RestTemplate();
//application/json 形式参数
JSONObject json = new JSONObject();
json.put("params1", "params1");
json.put("params2", "params2");
// 设置请求参数
RequestCallback requestCallback = request -> {
				//请求头
				request.getHeaders().setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL));
				request.getHeaders().setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
				//接口入参
				request.getBody().write(json.toString().getBytes());
			};
//自定义响应数据的处理方式
ResponseExtractor<Void> responseExtractor = response -> {
					//将响应正文写到硬盘而非内存
					Path path = Paths.get("");
					Files.copy(response.getBody(), path );

				}
				return null;
			};
template.execute("url", HttpMethod.POST, requestCallback, responseExtractor);

你可能感兴趣的:(web应用开发,json,java,restful,spring,boot)