使用RestTemplate发送POST请求

2019-07-31  本文已影响0人  茶还是咖啡

举个栗子

要访问的接口如下:
简要描述:

请求URL:

请求方式:

header

参数名 必选 类型 说明
app string 接入的应用名称
time string 当前时间戳
sign string MD5(appToken+time)

参数:

参数名 必选 类型 说明
multipartFile MultipartFile 文件对象
bucketName String 存储桶的名称

返回示例

{
    "code": 200,
    "message": "success",
    "data": {
        "url": "https://object-storage/6407740fbe5242fe94c5b72df5270f871550485315792.jpg"
    }
}

POST

    private String uploadToServer(File file) {

        //设置验签用的数据
        String timestamp = String.valueOf(System.currentTimeMillis());
        String sign = MD5Util.encode(appToken + timestamp);

        //设置请求头
        HttpHeaders headers = new HttpHeaders();
        headers.add("app", appName);
        headers.add("time", timestamp);
        headers.add("sign", sign);

        //设置content-type
        MediaType type = MediaType.parseMediaType("multipart/form-data");
        headers.setContentType(type);

        //设置请求体
        FileSystemResource fileSystemResource = new FileSystemResource(file);
        MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
        form.add("file", fileSystemResource);
        form.add("bucketName", bucket);

        //用HttpEntity封装整个请求报文
        HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);

        //服务端返回的json格式:"
        String result = restTemplate.postForObject(url, files, String.class);

        //将服务端发送过来的json转换成map
        Map mapTypes = JSON.parseObject(result);

        if ((Integer) mapTypes.get("code") == 200) {
            JSONObject data = (JSONObject) mapTypes.get("data");
            return data.getString("url");
        }
        return null;
    }
上一篇下一篇

猜你喜欢

热点阅读