resttemplate设置params的方法

 更新时间:2025年04月03日 09:17:05   作者:在下,杨江河  
RestTemplate设置请求参数的方式根据请求类型(GET/POST)和参数形式(路径参数、查询参数、JSON请求体)有所不同,下面通过本文给大家介绍resttemplate设置params的方法,感兴趣的朋友一起看看吧

如何使用RestTemplate设置请求参数

RestTemplate设置请求参数的方式根据请求类型(GET/POST)和参数形式(路径参数、查询参数、JSON请求体)有所不同,以下是具体实现方法:

一、GET请求参数设置

路径参数
使用占位符{param},通过Map或可变参数传递:

// 使用Map传参
Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("id", "123");
String result = restTemplate.getForObject("http://example.com/api/{id}", String.class, uriVariables);
// 或使用可变参数
String result = restTemplate.getForObject("http://example.com/api/{id}", String.class, "123");

查询参数
使用UriComponentsBuilder构建带参数的URL:

UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://example.com/api/data")
    .queryParam("name", "John")
    .queryParam("age", 25);
String url = builder.toUriString();
String result = restTemplate.getForObject(url, String.class);

二、POST请求参数设置

JSON请求体
使用HttpEntity封装嵌套JSON参数,并设置请求头:

// 构建嵌套参数
Map<String, Object> paramMap = new HashMap<>();
Map<String, String> queryMap = new HashMap<>();
queryMap.put("c1", "value1");
paramMap.put("a", "valueA");
paramMap.put("b", queryMap);
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(paramMap, headers);
// 发送请求
String response = restTemplate.postForObject("http://example.com/api", entity, String.class);

引用示例中的多层嵌套JSON构建方式。

表单参数
使用MultiValueMap传递表单数据:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("username", "admin");
formData.add("password", "123456");
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(formData, headers);
ResponseEntity<String> response = restTemplate.postForEntity("http://example.com/login", entity, String.class);

三、配置RestTemplate超时(可选)

通过配置类设置连接和读取超时:

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(10000); // 10秒
        factory.setReadTimeout(10000);    // 10秒
        return new RestTemplate(factory);
    }
}

引用配置类示例。

四、处理复杂响应

解析JSON响应并提取数据:

ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
JSONObject jsonResponse = new JSONObject(response.getBody());
if ("0000".equals(jsonResponse.getJSONObject("parameter").getString("code"))) {
    String result = jsonResponse.getString("result");
}

引用响应处理方法。

到此这篇关于resttemplate设置params的方法的文章就介绍到这了,更多相关resttemplate设置params内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的interrupted()和isInterrupted()

    Java中的interrupted()和isInterrupted()

    这篇文章主要介绍了Java中的interrupted()和isInterrupted()摸下面文章围绕interrupted()和isInterrupted()的相关资料展开详细内容,需要的小伙伴乐意参考下面下面文章具体价绍,希望对大家有所帮助
    2021-11-11
  • java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体

    java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体

    这篇文章主要介绍了java开发gui教程中jframe监听窗体大小变化事件和jframe创建窗体的示例,需要的朋友可以参考下
    2014-03-03
  • idea运行main方法或Test避免编译整个应用的实现方法

    idea运行main方法或Test避免编译整个应用的实现方法

    这篇文章主要介绍了idea运行main方法或Test避免编译整个应用的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java防止文件被篡改之文件校验功能的实例代码

    Java防止文件被篡改之文件校验功能的实例代码

    这篇文章主要介绍了Java防止文件被篡改之文件校验功能,本文给大家分享了文件校验和原理及具体实现思路,需要的朋友可以参考下
    2018-11-11
  • Spring-cloud Config Server的3种配置方式

    Spring-cloud Config Server的3种配置方式

    这篇文章主要介绍了Spring-cloud Config Server的3种配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring中自定义数据类型转换的方法详解

    Spring中自定义数据类型转换的方法详解

    Spring3引入了一个core.onvert包,提供一个通用类型转换系统。在Spring容器中,可以使用这个系统作为PropertyEditor实现的替代,将外部化的bean属性值字符串转换为所需的属性类型。本文将详解这一系统的使用方法,需要的可以参考一下
    2022-06-06
  • Java编程中的一些常见问题汇总

    Java编程中的一些常见问题汇总

    这篇文章主要介绍了Java编程中的一些常见问题汇总,本文总结的都是一些Java代码中比较典型的错误,需要的朋友可以参考下
    2014-09-09
  • elasticsearch插件开发教程

    elasticsearch插件开发教程

    这篇文章主要为大家详细介绍了elasticsearch插件开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 在Linux系统上升级Java版本的两种方法步骤

    在Linux系统上升级Java版本的两种方法步骤

    由于项目升级,需要将JDK7升级到JDK8,升级JDK的同时也要升级一些其他的版本,下面这篇文章主要给大家介绍了关于在Linux系统上升级Java版本的两种方法步骤,需要的朋友可以参考下
    2024-09-09
  • Java实现扑克牌游戏的示例代码

    Java实现扑克牌游戏的示例代码

    想不想带上好朋友来上一局三人扑克呢?这篇文章教你如何利用Java语言实现一个简单的扑克牌游戏,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-09-09

最新评论