Feign 发送https请求跳过证书认证

该篇文章介绍了一个Java配置类,用于在使用Feign进行HTTPS请求时,如何跳过证书验证。主要涉及的组件有Apache的SSLContexts和NoopHostnameVerifier,通过TrustSelfSignedStrategy策略信任自签名证书。

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

Feign 发送https请求跳过证书认证


import feign.Client;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.context.annotation.Bean;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;

public class IgnoreSSLCheckConfiguration {

    @Bean
    public Client feignClient() {
        return new Client.Default(getSSLSocketFactory(), new NoopHostnameVerifier());
    }

    private SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();
            return sslContext.getSocketFactory();
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
    }

}
### Feign GET 请求发送对象参数 当使用 Feign 客户端发送 GET 请求并传递对象作为参数时,由于 HTTP 协议本身的限制,GET 请求通常不允许在请求体中携带数据。因此,在这种情况下,需要将对象中的各个字段转换成 URL 查询参数来实现。 对于 Feign Client 来说,如果要发送的对象包含多个属性,则可以通过定义接口的方法签名,并利用 `@RequestParam` 注解指定如何映射这些属性到查询字符串上[^1]。需要注意的是,Feign 不支持直接将整个 Java 对象序列化为 JSON 并放在 GET 请求体内传输;相反,应该手动构建查询参数或者借助库函数自动完成此过程。 下面是一个简单的例子展示如何配置 Feign Client 以发送带有复杂对象的 GET 请求: ```java // 假设有一个名为 QueryParamObject 的类表示我们要传递的对象结构 public class QueryParamObject { private String param1; private Integer param2; // Getters and setters... } // 接口声明部分 @FeignClient(name = "exampleService", url = "${service.url}") public interface ExampleClient { @GetMapping("/api/resource") ResponseEntity<String> getResource(@ModelAttribute QueryParamObject query); } ``` 在这个例子中,`@ModelAttribute` 可用于指示 Spring MVC 将请求参数绑定到命令对象或表单对象上。不过请注意,这可能不是最标准的做法,因为严格意义上讲这是针对 HTML 表单提交设计的功能。更推荐的方式是显式地标记每一个参数: ```java @GetMapping("/api/resource") ResponseEntity<String> getResource( @RequestParam(value="param1") String param1, @RequestParam(value="param2") Integer param2); ``` 另外值得注意的一点是在某些版本的 Feign 中确实存在一种行为模式,即无论是什么样的 HTTP 方法(包括 GET),只要检测到了对象类型的参数就会尝试将其视为 POST 请求处理[^2]。但这并不是官方文档所提倡的最佳实践,而且可能会带来兼容性和安全性方面的问题。所以建议按照上述方法正确设置 GET 请求及其参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值