相关文章推荐
卖萌的小蝌蚪  ·  Can't pickle local ...·  1 周前    · 
曾经爱过的蜡烛  ·  Jackson ...·  2 周前    · 
傻傻的键盘  ·  java ...·  8 月前    · 
爱旅游的帽子  ·  HybridWebView ...·  12 月前    · 
不拘小节的电影票  ·  git - HTTP Basic: ...·  1 年前    · 
谦虚好学的花生  ·  Access 2007 VBA - ...·  1 年前    · 
长情的山羊  ·  Factory Interface ...·  1 年前    · 
首页 > 软件编程 > java > RestTemplate的Get请求

关于RestTemplate中的Get请求

作者:chengqiuming

这篇文章主要介绍了关于RestTemplate中的Get请求,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

RestTemplate的Get请求

getForEntity系列函数

函数原型:

1 getForEntity(String url,Class responseType,Object ... urlVariables)
2 getForEntity(String url,Class responseType,Map urlVariables)
3 getForEntity(URI url,Class responseType)
public String hello() {
    StringBuilder result = new StringBuilder();
    // GET
    //方式一
    result.append(restTemplate.getForEntity("http://HELLO-SERVICE/hello", String.class).getBody()).append("
    //方式二
    result.append(restTemplate.getForEntity("http://HELLO-SERVICE/hello1?name={1}", String.class, "didi").getBody()).append("
    //方式三
    Map<String, String> params = new HashMap<>();
    params.put("name", "dada");
    result.append(restTemplate.getForEntity("http://HELLO-SERVICE/hello1?name={name}", String.class, params).getBody()).append("
    //方式四
    UriComponents uriComponents = UriComponentsBuilder.fromUriString(
            "http://HELLO-SERVICE/hello1?name={name}")
            .build()
            .expand("dodo")
            .encode();
    URI uri = uriComponents.toUri();
    result.append(restTemplate.getForEntity(uri, String.class).getBody()).append("

getForObject系列函数

1 getForObject(String url,Class responseType,Object ... urlVariables)
2 getForObject(String url,Class responseType,Map urlVariables)
3 getForObject(URI url,Class responseType)
RestTemplate restTemplate = new RestTemplate();
String result=restTemplate.getForObject(uri,String.class)
//当body是一个User对象时,可以直接这样实现:
RestTemplate restTemplate = new RestTemplate();
User result=restTemplate.getForObject(uri,User.class)

RestTemplate get请求多参数 使用记录和简单封装

使用RestTemplate发送get请求时,如果有多个参数拼接起来会比较麻烦,在此做个简单的封装。

接收端Controller

@GetMapping(value = "/get/getByKeyword", produces = {"application/json;charset=UTF-8"})
    public String getByKeyword (@RequestParam(name = "name") String name,@RequestParam(name = "keyword") String keyword) {
        System.out.println(name+","+keyword);
        return name+","+keyword;
package xxx;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.springframework.web.client.RestTemplate;
public class RestTemplateUtil {
    public static void main(String[] args) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("name", "中国");
        paramMap.put("keyword", "YYDS");
        String aa = getForObject("http://127.0.0.1:8888/get/getKeyword", paramMap);
        System.out.println(aa);
     * 封装的get请求,暂时只支持map传参,并且value只支持基本类型和String
     * @param url
     * @param object
     * @return
    private static String getForObject(String url, Object object) {
        StringBuffer stringBuffer = new StringBuffer(url);
        if (object instanceof Map) {
            Iterator iterator = ((Map) object).entrySet().iterator();
            if (iterator.hasNext()) {
                stringBuffer.append("?");
                Object element;
                while (iterator.hasNext()) {
                    element = iterator.next();
                    Map.Entry<String, Object> entry = (Map.Entry) element;
                    //过滤value为null,value为null时进行拼接字符串会变成 "null"字符串
                    if (entry.getValue() != null) {
                        stringBuffer.append(element).append("&");
                    url = stringBuffer.substring(0, stringBuffer.length() - 1);
        } else {
            throw new RuntimeException("url请求:" + url + "请求参数有误不是map类型");
        System.out.println("url请求:" + url);
        return new RestTemplate().getForObject(url, String.class);

控制台输出日志

url请求:http://127.0.0.1:8888/get/getKeyword?name=中国&keyword=YYDS
log4j:WARN No such property [datePattern] in org.apache.log4j.ConsoleAppender.
中国,YYDS

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • RestTemplat中关于getForobject方法的使用
    RestTemplat中关于getForobject方法的使用
    2023-07-07
  • Java压缩和解压缩ZIP文件实战案例
    Java压缩和解压缩ZIP文件实战案例
    2023-07-07
  • 如何使用Java生成PDF文档详解
    如何使用Java生成PDF文档详解
    2023-07-07
  • Java使用Spring JdbcTemplate向in语句中传递参数的教程详解
    Java使用Spring JdbcTemplate向in语句中传递参数的教程详解
    2023-07-07
  • RestTemplate get请求携带headers自动拼接参数方式
    RestTemplate get请求携带headers自动拼接参数
    2023-07-07
  • SpringBoot手动开启事务:DataSourceTransactionManager问题
    SpringBoot手动开启事务:DataSourceTransaction
    2023-07-07
  • restTemplate发送get与post请求并且带参数问题
    restTemplate发送get与post请求并且带参数问题
    2023-07-07
  • RestTemplat中关于getForobject方法的使用
    RestTemplat中关于getForobject方法的使用
    2023-07-07
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号