• 【RestTemplate】使用学习


    【RestTemplate】使用学习

    Url中带参数,request body带json

    MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
    param.add("appid", "youappid");
    param.add("message", "Hello World!");
    param.add("sign", "sign");
    
    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url).queryParams(param);
    
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(MediaType.APPLICATION_JSON);//MediaType.TEXT_PLAIN
    HttpEntity<String> httpEntity = new HttpEntity<>(json, httpHeaders);
    
    ResponseEntity<Map> responseEntity = restTemplate.postForEntity(builder.toUriString(), httpEntity, Map.class);
    
    log.error("返回状态:" + responseEntity.getStatusCodeValue());
    log.error("返回内容:" + responseEntity.getBody());
    log.error("返回对象:" + JSONUtil.toJsonStr(responseEntity));

    上传文件 multipart/form-data 方式

    private String uploadFile(String content) {
        Random random = new Random();
        String tempFileName = UUID.randomUUID().toString().replaceAll("-", "") + random.nextInt(99999);
        File file = null;
        try {
            file = File.createTempFile(tempFileName, ".html");
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(content.getBytes(Charsets.UTF_8));
            fos.flush();
            fos.close();
    
            MultiValueMap<String, String> param = new LinkedMultiValueMap<>();
            param.add("appId", "testappId");
    
            UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://www.yousys.com/upload").queryParams(param);
    
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
    
    
            MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
            body.add("appId", "testappId");
            body.add("file", new FileSystemResource(file));
    
            HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(body, httpHeaders);
            ResponseEntity<Map> responseEntity = restTemplate.postForEntity(builder.toUriString(), httpEntity, Map.class);
            Map map = responseEntity.getBody(); // {code=0, msg=操作成功, data={fileURL=20201125143909/ace0bd4d7a80414099100cb34b58495d.html}, isHitCache=0}
            if ("0".equals(String.valueOf(map.get("code"))) && Objects.nonNull(map.get("data"))) {
                Map data = (Map) map.get("data");
                return String.valueOf(data.get("fileURL"));
            }
        } catch (Exception e) {
            log.error(e.getMessage());
            e.printStackTrace();
        } finally {
            if (file != null && file.exists()) {
                file.delete();
            }
        }
        return "";
    }
  • 相关阅读:
    SVN迁移到GIT
    Android之高效率截图
    Android TV 开发(5)
    Android 标题栏(2)
    Android 标题栏(1)
    C# 之抽象类和抽象方法
    浏览器渲染原理及流程
    C#中的DateTime
    由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
    配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的
  • 原文地址:https://www.cnblogs.com/yangchongxing/p/14041468.html
Copyright © 2020-2023  润新知