我是靠谱客的博主 霸气流沙,最近开发中收集的这篇文章主要介绍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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复