详解使用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


相关推荐: 如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何快速搭建自助建站会员专属系统?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel如何实现本地化和多语言支持?(i18n教程)  Laravel API资源类怎么用_Laravel API Resource数据转换  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何获取上海专业网站定制建站电话?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  如何获取PHP WAP自助建站系统源码?  iOS正则表达式验证手机号、邮箱、身份证号等  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何在云主机上快速搭建网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  html5的keygen标签为什么废弃_替代方案说明【解答】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  EditPlus中的正则表达式 实战(1)  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  简单实现jsp分页  香港服务器选型指南:免备案配置与高效建站方案解析  大型企业网站制作流程,做网站需要注册公司吗?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  微信小程序 闭包写法详细介绍  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  C语言设计一个闪闪的圣诞树  北京的网站制作公司有哪些,哪个视频网站最好?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  如何正确选择百度移动适配建站域名?  实例解析Array和String方法  详解Android图表 MPAndroidChart折线图  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  如何挑选最适合建站的高性能VPS主机?  Laravel Fortify是什么,和Jetstream有什么关系  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel如何实现模型的全局作用域?(Global Scope示例)  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel如何处理异常和错误?(Handler示例)  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何实现用户密码重置功能?(完整流程代码)  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?