当前位置:   article > 正文

RestTemplate中postForEntity其中参数为数组或者List

postforentity

一.使用场景

RestTemplate.postForEntity() 方法中的参数有数组或者List

因为是对接其他人的接口,不知道服务端是怎么写的, 也不知道是说明语言写的
所以其他办法不对,可以尝试下这个方法

二.解决办法


三.环境说明

3.1 spring boot 版本

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.3.7.RELEASE</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2 RestTemplate 创建Bean

	@Bean
	public RestTemplate restTemplate(RestTemplateBuilder builder) {
		return builder.additionalMessageConverters(new FastJsonHttpMessageConverter()).build();
	}
  • 1
  • 2
  • 3
  • 4

3.3 参数入参时(重点)

MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(2);
params.add("access_token"      , token);
params.addAll("username[]"     , usernames);
  • 1
  • 2
  • 3

重点说明:
1.需要使用addAll添加参数
2.key需要在key的值后加[]
3.value需要为list类型

四.完整示例

	public JSONArray accountDetails(String token, List<String> usernames) {
		String url = "xxxxxxxxxxxxxxxxxx";
		// @formatter:off
		MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(2);
		params.add("access_token"  , token);
		params.addAll("username[]" , usernames);
		// @formatter:on
		JSONObject json = (JSONObject) restTemplateUtils.post(url, params, JSONObject.class);
		log.info("查询响应:{}", json.toJSONString());
		if (json.getInteger("ret") == 0) {
			return json.getJSONObject"data").getJSONArray("data");
		}
		return null;
	}
	
	/**
	 * 封装的post通用部分
	 *
	 * @param url    请求路径
	 * @param params 参数
	 * @param clazz  响应类型
	 * @return 请求成功返回body, 请求失败抛出异常
	 */
	public Object post(String url, MultiValueMap<String, Object> params, Class<?> clazz) {
		HttpHeaders headers = new HttpHeaders();
		headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
		HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(params, headers);
		ResponseEntity<?> response = restTemplate.postForEntity(url, request, clazz);
		if (response.getStatusCode() != HttpStatus.OK) {
			throw new ResponseStatusException(response.getStatusCode(), "请求出错");
		}
		return response.getBody();
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

发个牢骚

所有的博客都是互相抄啊抄,就不能自己有点探索精神么
从下午查询资料,到现在快2点.百度也好,谷歌也好,来来回回就那么几个重复的答案.
写代码真难.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/302991
推荐阅读
相关标签
  

闽ICP备14008679号