欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【笔记】使用RestTemplate发送http请求

程序员文章站 2022-06-25 19:17:30
...
		RestTemplate restTemplate=new RestTemplate();
		List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
        converterList.remove(1); // 移除原来的转换器
        // 设置字符编码为utf-8
        HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
        converterList.add(1, converter); // 添加新的转换器(注:convert顺序错误会导致失败)
        restTemplate.setMessageConverters(converterList);

        //计算signature值
        String timestamp=String.valueOf(Math.round(System.currentTimeMillis()/1000));
        String nonce=CitySyncDataUtil.getRandomString(16);
        String signature= CitySyncDataUtil.getSHA256StrJava(timestamp+token+nonce+timestamp).toUpperCase();


        // -------------------------------> (选择性设置)请求头信息
        // HttpHeaders实现了MultiValueMap接口
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Content-Type", "application/json");
   

        // -------------------------------> 注:GET请求 创建HttpEntity时,请求体传入null即可
        // 请求体的类型任选即可;只要保证 请求体 的类型与HttpEntity类的泛型保持一致即可
        String httpBody = null;
        HttpEntity<String> httpEntity = new HttpEntity<String>(httpBody, httpHeaders);

        // -------------------------------> URI
        StringBuffer paramsURL = new StringBuffer("http://127.0.0.1?method={0}&request={1}");

        //  -------------------------------> 执行请求并返回结果
        // 此处的泛型  对应 响应体数据   类型;即:这里指定响应体的数据装配为String
        //通过在exchange替换url请求参数的内容,可以避免特殊字符引起的问题
        ResponseEntity<String> response =
                restTemplate.exchange(paramsURL.toString(), HttpMethod.GET, httpEntity, String.class,method,request);

        // -------------------------------> 响应信息
        //响应码,如:401、302、404、500、200等


        int statusCode=response.getStatusCodeValue();

        //请求成功
        if(200==statusCode && response.hasBody() && null!=response.getBody()){
        	System.out.println("请求成功");       
        }
相关标签: RestTemplate