欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

轻量级HTTP客户端Forest v1.5.16发布 - Gitee News - OSCHINA - 中文开源技术交流社区

最编程 2024-04-12 15:40:50
...

Forest v1.5.16 已经发布,轻量级 HTTP 客户端

此版本更新内容包括:

1.5.15版本发布了,本次添加了自定义SSL主机名验证器,以及修复了Response字符编码和gzip解压等问题

Forest已参加2021年度OSC中国开源项目评选活动,如果您喜欢Forest或对Forest感兴趣,请投上您宝贵的一票,感谢! 点击投票 投票

重点更新内容

自定义hostnameVerifier

定义一个实现 HostnameVerifier 接口的类

/**
 * 自定义SSL主机名/域名验证器
 */
public class MyHostnameVerifier implements HostnameVerifier {
    @Override
    public boolean verify(String s, SSLSession sslSession) {
        if ("gitee.com".equals(s)) {
            return true;
        }
        return false;
    }
}

将自定义的SSL主机名验证器配置到 Forest 的KeyStore

在Springboot项目的application.yml文件中配置
forest:
  ssl-key-stores:
    - id: keystore1
      hostname-verifier: your.site.MyHostnameVerifier

在接口中绑定

@Post(url = "/something", keyStore = "keystore1")
String postSomething(@Body body);

@SSLHostnameVerifier注解

除了在全局配置文件中的keyStore中配置外, 也可以通过相关注解直接在接口上绑定

public class MyHostnameVerifier implements HostnameVerifier {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        // 只通过域名为 gitee.com 的请求
        if ("gitee.com".equals(hostname)) {
            return true;
        }
        return false;
    }
}

通过@SSLHostnameVerifier注解绑定到接口

@Post(url = "/something")
@SSLHostnameVerifier(TrustAnyHostnameVerifier.class)
String postSomething(@Body body);

@SSLSocketFactoryBuilder注解

同理 SSLSocketFactory 也一样可以自定义,同时由@SSLSocketFactoryBuilder注解来绑定

public class MySSLSocketFactoryBuilder implements SSLSocketFactoryBuilder {

    @Override
    public SSLSocketFactory getSSLSocketFactory(ForestRequest request, String protocol) throws Exception {
        SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null,
                new TrustManager[] { new TrustAllManager() },
                new SecureRandom());
        System.out.println("do MySSLSocketFactoryBuilder");
        return sslContext.getSocketFactory();
    }
}

绑定到接口

@Post(url = "/something")
@SSLSocketFactoryBuilder(MySSLSocketFactoryBuilder.class)
String postSomething(@Body body);

更新日志

新增特性

  • feat: 自定义 hostnameVerifier 和 SSLSocketFactoryBuilder (#I4LGW8)
  • feat: 根据Response的Content-Encoding自动识别是否为gzip压缩数据,并自动解压

修复问题

  • fix: 重定向后URL的Query参数会重复增加 (#I4LPGU)
  • fix: 修复content-encoding导致的字符编码转换异常 (#I4LJ3X)
  • fix: 修复字符编码判断的BUG

代码更新

  • add: @SSLHostnameVerifier 注解
  • add: @SSLSocketFactoryBuilder 注解

鸣谢

本次更新有 @AlexShi 小伙伴参与贡献,万分感谢!

2021年度OSC中国开源项目评选

Forest已参加2021年度OSC中国开源项目评选活动,如果您喜欢Forest或对Forest感兴趣,请投上您宝贵的一票,感谢!

点击投票 投票

详情查看:https://gitee.com/dromara/forest/releases/v1.5.16