我是靠谱客的博主 霸气流沙,最近开发中收集的这篇文章主要介绍ResponseEntity<String> resultMap = restTemplate.getForEntity,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用restTemplate的get方法获取返回值中的头部信息的 cookie,吧cookie拿来放到头部作为参数再次请求另一个接口,就是先登录获取返回的cookie 吧cookie作为参数调用另一个接口。。。。。

 @RequestMapping(value = "/login")
    @ResponseBody
    public String login(String code) throws Exception {
        String username="123";
        String password = "123";

        try {
            RestTemplate restTemplate = new RestTemplate(generateHttpRequestFactory());
            ResponseEntity<String> resultMap = restTemplate.getForEntity("http://123/api/user/login?username=" + username+"&password="+password, String.class);
            JSONObject jsonObject = JSONObject.parseObject(resultMap.getBody());

            if("success".equals(jsonObject.get("msg"))&&resultMap.getHeaders().get("Set-Cookie").size()>0){
               String Cookie = resultMap.getHeaders().get("Set-Cookie").get(0).split(";")[0];
                HttpHeaders headers = new HttpHeaders();
                headers.put(HttpHeaders.COOKIE, Collections.singletonList(Cookie));
                HttpEntity<String> requestEntity = new HttpEntity<String>(headers);

                ResponseEntity<String> resultMap1 = restTemplate.exchange("http://123/"+code+"/"+code , HttpMethod.GET, requestEntity, String.class);
                resultMap1.getBody();
               return Cookie;
            }
        }catch (Exception e){
            e.printStackTrace();
            logger.error(e.getMessage());
            return null;
        }
        return null;
    }

参考代码A

Map<String,Object> params=new HashMap<>();
params.put("username",username);
params.put("password",password);
ResponseEntity<String> entity = restTemplate.postForEntity(loginUrl, params, String.class);
List<String> cookies = entity.getHeaders().get("Set-Cookie");

//        log.info(message);
HttpHeaders headers = new HttpHeaders();
/* 登录获取Cookie 这里是直接给Cookie,可使用下方的login方法拿到Cookie给入*/
headers.put(HttpHeaders.COOKIE,cookies);        //将cookie存入头部
HttpEntity<String> requestEntity = new HttpEntity<String>(headers);

String body = restTemplate.exchange(hostUrl+map.get("yyId"), HttpMethod.GET, requestEntity, String.class).getBody();
log.info(body);

参考代码B

package com.xinghuo.controller;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
 
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
 
/**
 * 测试restTemplate
 */
@RestController
@Api(tags = "测试")
@RequestMapping("/test")
public class HttpController{
    
    @Autowired
    private RestTemplate restTemplate;
    
    /**
     * 测试
     */
    @RequestMapping(value = "/http", method = RequestMethod.GET)
    @ApiOperation(value = "测试http")
    public String http() {
        String id = "52db70d13ad74b0f85142e39b32164b4";
        String name = "测试";
        //参数
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<String, Object>();
        param.add("id", id);
        param.add("name", name);
        
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.add("accessToken", "3d40e41e9d764d30a9a4d72e61ad61b9");
        
        //封装请求头
        HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
        
        try {
            //访问地址
            String url = "http://localhost:8080/testservice/test/get";
            
            //1. 有参数,没有请求头,拼接方式
            String result1 = restTemplate.getForObject(url + "?id="+id+"&name="+name, String.class);
            //2. 有参数,没有请求头,占位符方式
            String result2 = restTemplate.getForObject(url + "?id={id}&name={name}", String.class, param);
            //3. 有请求头,没参数,result3.getBody()获取响应参数
            ResponseEntity<String> result3 = restTemplate.exchange(url, HttpMethod.GET, formEntity, String.class);
            //4. 有请求头,有参数,result4.getBody()获取响应参数
            ResponseEntity<String> result4 = restTemplate.exchange(url+"?id="+id+"&name="+name, HttpMethod.GET, formEntity, String.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "success";
    }
}


最后

以上就是霸气流沙为你收集整理的ResponseEntity<String> resultMap = restTemplate.getForEntity的全部内容,希望文章能够帮你解决ResponseEntity<String> resultMap = restTemplate.getForEntity所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部