热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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

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

最近学习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 formEntity = new HttpEntity(json, headers);

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

  /*
  * 测试
  */
  public static void test4(){
      JSONObject respOnse= null;
      Map 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 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 get(String url, Class returnClassName, Map 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 post(String url,Class returnClassName,Map inputHeader,Map inputParameter,String jsonBody){
    //请求Header
    HttpHeaders httpHeaders = new HttpHeaders();
    //拼接Header
    if (inputHeader != null) {
      Set keys = inputHeader.keySet(); 
      for (Iterator 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 acceptableMediaTypes = new ArrayList<>();
    acceptableMediaTypes.add(MediaType.ALL);
    httpHeaders.setAccept(acceptableMediaTypes);

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

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


推荐阅读
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • jmeter实践:从csv中获取带引号的数据详情的技巧和运行全部数据的方法
    本文分享了jmeter实践中从csv中获取带引号的数据的解决办法,包括设置CSV Data Set Config和运行脚本获取数据的方法。另外还介绍了循环运行csv中全部数据的解决方法,避免每次修改csv用例都需要修改脚本的麻烦。通过了解和掌握工具的细节点,可以更好地解决问题和提高技术水平。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
author-avatar
玫瑰花开-内蒙_238
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有