详解使用Spring的restTemplete进行Http请求

发布时间 - 2026-01-11 01:44:12    点击率:

最近学习Spring框架,本文介绍了使用Spring的restTemplete进行Http请求,留个笔记

/*
* rest templete
*/
public class RestTemplateTest {
  //private static String url = "http://10.2.1.46:8080";
  private static String url = "http://127.0.0.1:8080/test";
  private static String autoDeploy = "/api/ddd/manages/yyy/1111";

  public static void main(String[] args) throws UnsupportedEncodingException {
    JSONObject token1 = LoginTest.login(url);
    JSONObject token = new JSONObject();
    token.put("token", token1.getString("token"));
    token.put("userName", "chenchen.ming@56qq.com");
    String name = "明辰晨";
    token.put("name", URLEncoder.encode(name, "UTF-8"));

    String jsonBody = DmsAutoDeployTest.dmsAutoDeployData();
    autoDeploy(jsonBody,token.toJSONString());
  }

  /*
  * 主要的post方法
  */
  public static void autoDeploy(String json,String token){
    String autoDeployUrl = url + autoDeploy;
    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    //一定要设置好ContentType为utf8否则会乱码
    MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
    headers.setContentType(type);
    headers.add("Accept", MediaType.APPLICATION_JSON.toString());
    headers.add("Authentication", token);//设置自定义session header

    HttpEntity<String> formEntity = new HttpEntity<String>(json, headers);

    Map<String, Object> parameterMap = new HashMap<>();
    //entity = Header,uriVariables = Parameters;
    restTemplate.postForObject(autoDeployUrl, formEntity, String.class, parameterMap);
  }

  /*
  * 测试
  */
  public static void test4(){
      JSONObject response = null;
      Map<String,Object> param = new HashMap<>();
      param.put("ming", "chyen");

      String json = "haha";
      try {
        response = RestUtil.post("http://127.0.0.1:8080/cloud-master/api/release/manages/detail", JSONObject.class,null,null,json);
      } catch (Exception e) {
        e.printStackTrace();
      }
      System.out.println(response);
  }
  /**
   * 测试
   */
  public static void test(){
    RestTemplate restTemplate = new RestTemplate();

    Map<String, Object> parameterMap = new HashMap<>();
    restTemplate.getForObject("url", String.class,parameterMap);
    //factory.createRequest(uri, httpMethod)
  }
}

Util

/**
 * 使用Spring的restTemplate进行http请求
 * @author Mingchenchen
 *
 */
public class RestUtil {
  private static RestTemplate restTemplate = new RestTemplate();

  /**
   * Get方法
   * 
   * @param url:地址
   * @param returnClassName:返回对象类型,如:String.class
   * @param parameters:parameter参数
   * @return
   */
  public static <T> T get(String url, Class<T> returnClassName, Map<String, Object> parameters){
    if (parameters == null) {
      return restTemplate.getForObject(url, returnClassName);
    }
    return restTemplate.getForObject(url, returnClassName, parameters);
  }

  /**
   * post请求,包含了路径,返回类型,Header,Parameter
   * 
   * @param url:地址
   * @param returnClassName:返回对象类型,如:String.class
   * @param inputHeader
   * @param inputParameter
   * @param jsonBody
   * @return
   */
  public static <T> T post(String url,Class<T> returnClassName,Map<String,Object> inputHeader,Map<String,Object> inputParameter,String jsonBody){
    //请求Header
    HttpHeaders httpHeaders = new HttpHeaders();
    //拼接Header
    if (inputHeader != null) {
      Set<String> keys = inputHeader.keySet(); 
      for (Iterator<String> i = keys.iterator(); i.hasNext();) { 
        String key = (String) i.next(); 
        httpHeaders.add(key, inputHeader.get(key).toString()); 
      } 
    }
    //设置请求的类型及编码
    MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
    httpHeaders.setContentType(type);
    httpHeaders.add("Accept", "application/json");
    List<MediaType> acceptableMediaTypes = new ArrayList<>();
    acceptableMediaTypes.add(MediaType.ALL);
    httpHeaders.setAccept(acceptableMediaTypes);

    HttpEntity<String> formEntity = new HttpEntity<String>(jsonBody, httpHeaders);
    if (inputParameter==null) {
      return restTemplate.postForObject(url, formEntity, returnClassName);
    }
    return restTemplate.postForObject(url, formEntity, returnClassName, inputParameter);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# restTemplete  # Http请求  # resttemplate  # put请求  # get请求  # Spring MVC 框架搭建配置方法及详解  # Spring中的事务管理实例详解  # SpringMVC文件上传 多文件上传实例  # SpringMVC+MyBatis声明式事务管理  # Spring常用注解汇总  # Spring实现文件上传(示例代码)  # 读取spring配置文件的方法(spring读取资源文件)  # 详解Java的Spring框架中的注解的用法  # Spring MVC中上传文件实例  # 自定义  # 则会  # 留个  # 大家多多  # 包含了  # qq  # ming  # 明辰晨  # UTF  # encode  # URLEncoder  # token  # put  # login  # LoginTest  # chenchen  # getString  # userName  # jsonBody  # ContentType 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 利用 Google AI 进行 YouTube 视频 SEO 描述优化  python中快速进行多个字符替换的方法小结  利用JavaScript实现拖拽改变元素大小  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  黑客入侵网站服务器的常见手法有哪些?  Laravel如何优化应用性能?(缓存和优化命令)  Android实现代码画虚线边框背景效果  黑客如何通过漏洞一步步攻陷网站服务器?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  Laravel如何实现文件上传和存储?(本地与S3配置)  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  高端网站建设与定制开发一站式解决方案 中企动力  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  郑州企业网站制作公司,郑州招聘网站有哪些?  昵图网官方站入口 昵图网素材图库官网入口  Laravel定时任务怎么设置_Laravel Crontab调度器配置  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  LinuxShell函数封装方法_脚本复用设计思路【教程】  如何自定义建站之星模板颜色并下载新样式?  如何用AWS免费套餐快速搭建高效网站?  Mybatis 中的insertOrUpdate操作  如何快速生成专业多端适配建站电话?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  韩国服务器如何优化跨境访问实现高效连接?  详解MySQL数据库的安装与密码配置  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何处理异常和错误?(Handler示例)  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  简单实现Android验证码  Laravel如何创建自定义Artisan命令?(代码示例)  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  免费视频制作网站,更新又快又好的免费电影网站?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  C语言设计一个闪闪的圣诞树  PHP正则匹配日期和时间(时间戳转换)的实例代码  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在Tomcat中配置并部署网站项目?  JS去除重复并统计数量的实现方法  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel如何配置Horizon来管理队列?(安装和使用)  如何在Windows环境下新建FTP站点并设置权限?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  制作电商网页,电商供应链怎么做?