这篇文章主要讲述如何使用RestTemplate,帮助新手快速入门,看完会比较有成就感和获得感,都是干货!
Java如何调用http接口?
-
通过使用jdk网络类Java.net.HttpURLConnection;
-
通过Apache封装的CloseableHttpClient;
-
通过SpringBoot-RestTemplate;
本章主要讲SpringBoot使用RestTemplate调用http网络接口。
RestTemplate使用方法
RestTemplate是Sping支持的一种Http请求工具,提供常用的请求模板,例如GET,POST,PUT等通用的请求执行方法。在SpringBoot中可以直接使用new RestTemplate来使用该方法。
RestTemplate restTemplate = new RestTemplate();
修改RestTemplate乱码问题:
HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
// 使用 utf-8 编码集的 conver 替换默认的 conver(默认的 string conver 的编码集为 "ISO-8859-1")
restTemplate.getMessageConverters().set(1,converter);
不多BB,直接上代码,我们这里以get请求方式ping一下百度官网
整个项目只有一个控制类和spring boot启动类。和配置文件
项目结构:
配置文件:
server.port=8086
server.servlet.context-path=/test
spring.profiles.ative=dev
控制类:
这里的url可以换成任意的路径,包括本地项目服务路径。
package com.test.resttemplate.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
@RestController
@Slf4j
@RequestMapping("/test")
@Api(tags = "spring获取http测试")
public class GetTestController {
@RequestMapping(value = "/getTest",method = RequestMethod.GET)
@ApiOperation("获取http测试")
public String test() throws Exception{
RestTemplate restTemplate = new RestTemplate();
HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
// 使用 utf-8 编码集的 conver 替换默认的 conver(默认的 string conver 的编码集为 "ISO-8859-1")
restTemplate.getMessageConverters().set(1,converter);
String url = "http://www.baidu.com";
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url,String.class);
//获取返回的状态码值
HttpStatus statusCode = responseEntity.getStatusCode();
//判断状态码值是否是以2开头,及返回的状态是否成功!
boolean urlresult = statusCode.is2xxSuccessful();
log.info("=========远程调用参数结果========"+statusCode);
if(urlresult)
return "访问成功!";
else
return "访问失败!";
}
}
接下来我们启动这个项目,然后访问该路径
postman访问:
浏览器访问:
程序运行状态信息: