Java调用外部REST请求的几种方式

本文介绍了Java中两种调用外部REST请求的方式:restTemplate(Spring提供)和HttpUtil(Hutool库)。restTemplate支持通过HttpURLConnection或自定义HTTP源进行请求,提供同步和异步请求,且支持将返回值直接转换为实体类。而HttpUtil是HttpRequest的封装,提供get和post等请求方法。注意,虽然restTemplate支持get请求带body参数,但这是HTTP规范中的非传统做法,可能不被所有服务接受。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 restTemplate — spring 提供

特点:

1、RestOperations 提供了各种封装方法,非常方便直接将返回转成实体类。

2、默认使用JDK 的HttpURLConnection进行通信,但是可以通过RestTemplate.setRequestFactory 切换到不同的HTTP源:如Apache HttpComponents、Netty、OkHttp。

3、支持同步、异步请求;

4、支持更多的定制,比如拦截器等。

ps:支持 get 请求,参数是 body 的形式。

1.1 底层是java的HttpURLConnection(默认使用,可以定制)

所有的请求都需要执行 doExecute() 方法

@Nullable
protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
    Assert.notNull(url, "URI is required");
    Assert.notNull(method, "HttpMethod is required");
    ClientHttpResponse response = null;

    Object var14;
    try {
        // 创建请求
        ClientHttpRequest request = this.createRequest(url, method);
        if (requestCallback != null) {
            requestCallback.doWithRequest(request);
        }

        response = request.execute();
        this.handleResponse(url, method, response);
        var14 = responseExtractor != null ? responseExtractor.extractData(response) : null;
    } catch (IOException var12) {
        String resource = url.toString();
        String query = url.getRawQuery();
        resource = query != null ? resource.substring(0, resource.indexOf(63)) : resource;
        throw new ResourceAccessException("I/O error on " + method.name() + "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值