resttemplate post方法
阿新 • • 發佈:2017-10-23
headers com 封裝 exceptio findall ntb object lar nbsp
@Component @Slf4j public class StatisticsService { private final RestTemplate restTemplate; private final ExamRepository repository; private final ExamService examService; @Autowired public StatisticsService(RestTemplate restTemplate, ExamRepository repository, ExamService examService) {this.restTemplate = restTemplate; this.repository = repository; this.examService = examService; } //上傳功能實現 public void postStatistics() throws Exception { int number = getLastedNumber(); List<Integer> ids = repository.findAll().stream().filter(exam -> exam.getId().compareTo(number) > 0).map(Exam::getId).collect(Collectors.toList()); post(Utils.getURI(Utils.URL.URL_POST_STATISTICS, getHeaders()), ids); }//封裝的通用上傳方法 public void post(URI url, List<Integer> ids) throws Exception { ParameterizedTypeReference<ResponseBase<String>> ptr = new ParameterizedTypeReference<ResponseBase<String>>() { }; //解壓gzip HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = newHttpComponentsClientHttpRequestFactory(HttpClientBuilder.create().build()); RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory); for (Integer id : ids) { ExamService.ExamDetailResult data = examService.getExamDetailResult(id); String requestJson = new ObjectMapper().writeValueAsString(data); JSONObject obj = new JSONObject(); obj.put("number", id); obj.put("data", requestJson); obj.put("type", 1); obj.put("version", "1.0.0"); HttpEntity<String> requestEntity = new HttpEntity<>(obj.toString(), getHeaders()); ResponseEntity<ResponseBase<String>> result = restTemplate.exchange(url, HttpMethod.POST, requestEntity, ptr); if (null == result.getBody().getData()) { throw new IllegalArgumentException("wrong action"); } } } //設置頭信息 public MultiValueMap<String, String> getHeaders() { MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); headers.add("Accept", "application/json;charset=UTF-8"); headers.set("Content-Type", "application/json;charset=UTF-8"); headers.add("Authorization", "Basic YWRtaW46YWRxxxx="); return headers; } }
resttemplate post方法