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

 更新时间:2017年06月05日 16:02:07   作者:God_Ming  
本篇文章主要介绍了详解使用Spring的restTemplete进行Http请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近学习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);
  }
}

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

相关文章

  • 关于maven全局配置文件settings.xml解析

    关于maven全局配置文件settings.xml解析

    这篇文章主要介绍了关于maven全局配置文件settings.xml,具有很好的参考价值,希望对大家有所帮助。
    2022-03-03
  • springboot跨域过滤器fetch react Response to preflight request doesn‘t pass access control check问题

    springboot跨域过滤器fetch react Response to p

    这篇文章主要介绍了springboot跨域过滤器fetch react Response to preflight request doesn‘t pass access control check问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • SpringBoot2整合ElasticJob框架过程详解

    SpringBoot2整合ElasticJob框架过程详解

    这篇文章主要介绍了SpringBoot2整合ElasticJob框架过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring Boot Admin 快速入门详解

    Spring Boot Admin 快速入门详解

    这篇文章主要介绍了SpringBoot Admin 使用指南(推荐),Spring Boot Admin 是一个管理和监控你的 Spring Boot 应用程序的应用程序,非常具有实用价值,需要的朋友可以参考下
    2021-11-11
  • 为什么Java项目中别用!=null做判空

    为什么Java项目中别用!=null做判空

    本文主要介绍了为什么Java项目中别用!=null做判空,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java信号量Semaphore原理及代码实例

    Java信号量Semaphore原理及代码实例

    这篇文章主要介绍了Java信号量Semaphore原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 一篇文章带你入门java代理模式

    一篇文章带你入门java代理模式

    这篇文章主要介绍了Java代理模式,结合实例形式详细分析了java基本数据类型、数据类型转换、算术运算符、逻辑运算符等相关原理与操作技巧,需要的朋友可以参考下
    2021-08-08
  • Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法

    这篇文章主要介绍了Java 中二进制转换成十六进制的两种实现方法的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java使用雪花id生成算法详解

    Java使用雪花id生成算法详解

    SnowFlake算法,是Twitter开源的分布式id生成算法,在2014年开源,开源的版本由scala编写。其核心思想就是-使用一个64bit的long型的数字作为全局唯一id
    2022-12-12
  • Mybatis中注解@MapKey的使用详解

    Mybatis中注解@MapKey的使用详解

    mybatis的原身是ibatis,现在已经脱离了apache基金会。这篇文章主要介绍了Mybatis中注解@MapKey的使用的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论