现在你可以使用spring boot 只用两行代码来完成一个请求,并返回对象

现在你可以使用spring boot 只用两行代码来完成一个请求,并返回对象

首先,请将以下依赖项添加到pom.xml文件中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
1:发送GET请求
@Service
public class RestService {

    private final RestTemplate restTemplate;

    public RestService(RestTemplateBuilder restTemplateBuilder) {
        this.restTemplate = restTemplateBuilder.build();
    }

    public String getPostsPlainJSON() {
        String url = "https://www.XXX.top";
        return this.restTemplate.getForObject(url, String.class);
    }
}
这里返回的是纯 JSON 字符串
我们可以使用 Jackson 轻松将 JSON 字符串转成 JSON 对象
创建模型类
public class Token implements Serializable {
    
    private String access_token;
    private String expires_in;

    public String getAccess_token() {
        return access_token;
    }

    public void setAccess_token(String access_token) {
        this.access_token = access_token;
    }

    public String getExpires_in() {
        return expires_in;
    }

    public void setExpires_in(String expires_in) {
        this.expires_in = expires_in;
    }
}
将 Token 类用作getForObject()方法中的响应类型
public Token getPostsPlainJSON() {
        String url = "https://www.XXX.com";
        return this.restTemplate.getForObject(url, Token.class);
2:POST请求
public SecCheck get_msgSecCheck(String content ){
        String url = "https://xxx.com";
        
        //需要上传的数据
        Map<String, String> paramMap = new HashMap<>();
        paramMap.put("content",content);

		// 创建头信息
        HttpHeaders headers = new HttpHeaders();
		// 'content-type' 头信息
	    headers.setContentType(MediaType.APPLICATION_JSON);
	    // 'accept' 头信息
	    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
		
		// 创建请求
        HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(paramMap,headers);
        
        // 发送请求
        ResponseEntity<SecCheck> response = this.restTemplate.postForEntity(url, httpEntity, SecCheck.class);
        return response.getBody();
  }
3:异常处理
public Login get_code2Session(){

        try{
        
            String url = "https://xxx.com";
            return this.restTemplate.getForObject(url, Login.class);
            
        }catch (HttpStatusCodeException e){
        
            // 原始的HTTP状态代码,例如“ 404”
            System.out.println(e.getRawStatusCode());
            
            //http状态码,例如404 NOT_FOUND
            System.out.println(e.getStatusCode().toString());
            
            // 得到响应体
            System.out.println(e.getResponseBodyAsString());
            
            //获取HTTP标头
            HttpHeaders headers= e.getResponseHeaders();
            System.out.println(headers.get("Content-Type"));
            System.out.println(headers.get("Server"));
            
            return null;
        }
   }
4:超时处理

默认情况下,RestTemplate具有无限超时。
我们可以通过使用RestTemplateBuilder类来设置连接和读取超时来更改此行为。

private final RestTemplate restTemplate;

	// 设置连接和读取超时时间
    public WXMapper(RestTemplateBuilder restTemplateBuilder) {
        this.restTemplate = restTemplateBuilder
                .setConnectTimeout(Duration.ofSeconds(6000))
                .setReadTimeout(Duration.ofSeconds(6000))
                .build();
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一拖再拖 一拖再拖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值