【笔记】使用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("请求成功");
}
推荐阅读
-
[日常] 使用TCPDUMP和Ethereal抓包分析HTTP请求中的异常情况
-
JAVA发送HTTP请求的四种方式总结
-
python使用scrapy发送post请求的坑
-
.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包
-
nodejs 使用http进行post或get请求的实例(携带cookie)
-
Python使用requests发送POST请求实例代码
-
Android HTTP发送请求和接收响应的实例代码
-
iOS应用中发送HTTP的get请求以及HTTP异步请求的方法
-
【笔记】java http请求 HttpURLConnection 302 重定向
-
python 使用 requests 模块发送http请求 的方法