restTempate使用

本文介绍如何使用RestTemplate下载图片,详细解析访问图片URL并获取byte[]的过程,同时探讨了原生httpclient如何实现文件上传至服务端的两种方法,包括直接发送文件和服务端直接上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载图片

 RestTemplate restTemplate=new RestTemplate();
    ResponseEntity<Resource> forObject = restTemplate.getForEntity(
        "http://127.0.0.1:8030/images/1.jpg",
        Resource.class);
    Path path = Paths.get("D:\\Users\\StSahana\\Desktop", "a.jpg");
      Files.copy(forObject.getBody().getInputStream(),path);

访问图片URL并返回byte[]

ResponseEntity<byte[]> response = restTemplate.exchange("http://127.0.0.1:8030/images/1.jpg",
  HttpMethod.GET, null, byte[].class);
byte[] imageBytes = response.getBody();

原生httpclient发送文件到服务端

FileSystemResource resource =new FileSystemResource(new File(path.toString()));
MultiValueMap<String, Object> form = new LinkedMultiValueMap<String, Object>();
form.add("file",resource);
HttpEntity< MultiValueMap<String, Object> > formEntity = new HttpEntity< MultiValueMap<String, Object> >(form, headers);
HttpEntity<String> res = restTemplate.exchange("http://127.0.0.1:8080/upload", HttpMethod.POST, formEntity, String.class);
System.out.println(res.getBody());

原生httpclient访问图片并直接上传至服务端。

 JSONObject result = null;
        HttpPost post = null;
        CloseableHttpResponse resp = null;
        CloseableHttpClient client = null;
        CloseableHttpResponse response1 = null;//访问url的response
        CloseableHttpClient httpclient = null;//访问pic的client
        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(defaultSocketTimeout).setConnectTimeout(defaultConnectionTimeout)
                .build();
        try {
            client = HttpClients.createDefault();
            URI uri = new URIBuilder(platformConfiguration.getBaseurl())
                    .setPath(personUrl.getUploadPic())
                    .setParameter("personId", personId + "")
                    .setParameter("token", cardLogin.getToken(isExpired))
                    .build();
            post = new HttpPost(uri);


            httpclient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(picUrl);
            httpGet.setConfig(requestConfig);
            response1 = httpclient.execute(httpGet);
            HttpEntity entity1 = response1.getEntity();
            InputStream input1 = entity1.getContent();

            //塞进实体
            InputStreamBody inputStreamBody = new InputStreamBody(input1, StringUtils.getFilename(picUrl));
//          FileBody file = new FileBody(new File("D:\\aaaa.jpg"));

            HttpEntity entity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE).addPart("file", inputStreamBody).build();
            post.setEntity(entity);
            post.setConfig(requestConfig);
            resp = client.execute(post);
            HttpEntity respEntity = resp.getEntity();
            String tempResult;
            if (null != respEntity) {
                tempResult = EntityUtils.toString(respEntity, Consts.UTF_8);
                log.info("获取到的返回结果:" + tempResult);
                result = JSON.parseObject(tempResult);
            }

        } catch (Exception e) {
            log.error("上传图片失败");
            log.error(e.getMessage());
            e.printStackTrace();
        } finally {
            try {
                if (null != resp) {
                    resp.close();
                }
                if (null != client) {
                    client.close();
                }
                if (null != httpclient) {
                    httpclient.close();
                }
                if (null != response1) {
                    response1.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值