resttemplate post方法上传资源


@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 = new HttpComponentsClientHttpRequestFactory(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;
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM