spring boot项目访问外部http请求的解决方案

简介: spring boot项目访问外部http请求的解决方案

Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求。针对这一需求以前的做法就是访问外部请求都要经过httpClient 需要专门写一个方法,来发送http请求,这个就不说了,网上一搜全都是现成的方法。springboot 实现外部http请求 是通过FeignClient来请求http数据的,特别简单并且非常实用的一个注解就可以搞定。

采用Feign进行消费

第一步:在maven项目中添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.0.2.RELEASE</version>
</dependency>

第二步:编写接口,放置在service层

@FeignClient(url="${crm.server.url}",name="crmServer")
public interface naturalVisitCustomerService {
    @RequestMapping(value = "/view/naturalVisit/addNaturalVisitCustomer",method = RequestMethod.POST)
    public JSONObject saveCustomer(@RequestParam("customerName") String customerName, @RequestParam("customerPhone") String customerPhone,
                                   @RequestParam("source") String source, @RequestParam("intention") String intention);
}

这里的crm.server.url 是配置在properties配置文件中的  结构是ip地址和端口号

crm.server.url = https://devcrm.yijia.com:5555

/view/naturalVisit/addNaturalVisitCustomer  是接口名字  

第三步:要在启动的java类上加 @EnableFeignClients这个注解

@SpringBootApplication(exclude = PageHelperAutoConfiguration.class)
@MapperScan("com.yijia.website.module.*.dao")
@EnableTransactionManagement
@EnableCaching
@EnableRedisHttpSession
@EnableFeignClients
public class CmsApplication {
  public static void main(String[] args){
    SpringApplication.run(CmsApplication.class, args);
  }
}

第四步:在需要调用的地方调用刚刚写的接口

    @ResponseBody
    @RequestMapping("/saveQuote")
    public String saveQuoteInfo(Quote quote){
        quote.setCreateTime(new Date());
        if (quote.getQuoteId() != null){
            return quoteService.updateQuote(quote);
        }
        addCustomerToCRM(quote);
        return quoteService.saveQuote(quote);
    }
    // 新加入的方法,专门用于调用刚刚写的放入到service层的接口
    private void addCustomerToCRM(Quote quote) {
        String customerName = Optional
                .ofNullable(quote.getCustomerName())
                .orElse("自然到访客户");
        try{
            JSONObject result = naturalVisitCustomerService.saveCustomer(customerName, quote.getCustomerPhone(), CmsConst.SITE, CmsConst.CONSUMER);
            log.info("自然到访客户接口 保存客户 结果 === {}",result.toString());
        }catch (Exception e){
            log.error("自然到访客户接口 保存客户 异常 === {}",e.getMessage());
        }
    }

参考文献

spring boot 访问外部http请求

目录
打赏
0
1
1
0
16
分享
相关文章
智慧工地解决方案,Spring Cloud智慧工地源代码
智慧工地平台针对建筑工地人员管理难、机械设备繁多、用电安全及施工环境复杂等问题,通过集成应用和硬件设备,实现数据互联互通与集中展示。基于微服务架构(Java+Spring Cloud+UniApp+MySql),平台支持PC端、手机端、平板端、大屏端管理,涵盖人员实名制、工资考勤、视频AI监控、绿色施工、危大工程监测、物料管理和安全质量管理等功能,助力施工现场的数字化、智能化综合管理,提升效率与安全性。
39 15
HTTP代理配置中的常见错误及其解决方案
随着互联网发展,使用HTTP动态代理IP的需求日益增加。配置HTTP代理时常见问题及解决方法包括:1) 代理服务器无法连接:检查网络、防火墙和代理服务状态;2) 认证失败:确认凭据和配置;3) 请求超时:增加超时时间、检查后端服务和网络延迟;4) 缓存问题:清理缓存、设置缓存控制或禁用缓存;5) SSL/TLS问题:正确配置证书并确保客户端信任;6) 访问控制问题:检查ACL和日志;7) 性能问题:监控资源、负载均衡和优化配置;8) 日志记录与分析问题:启用详细日志、设置轮换策略和使用分析工具。通过解决这些问题,可以更有效地管理HTTP代理。
155 13
HTTP 范围Range请求
HTTP范围请求是一种强大的技术,允许客户端请求资源的部分内容,提高了传输效率和用户体验。通过正确配置服务器和实现范围请求,可以在视频流、断点续传下载等场景中发挥重要作用。希望本文提供的详细介绍和示例代码能帮助您更好地理解和应用这一技术。
75 19
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
96 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
1月前
|
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
335 13
Spring Cloud Alibaba:一站式微服务解决方案
什么是HTTP POST请求?初学者指南与示范
HTTP POST请求是一种常用的HTTP方法,主要用于向服务器发送数据。通过合理设置请求头和请求主体,可以实现数据的可靠传输。无论是在客户端使用JavaScript,还是在服务器端使用Node.js,理解和掌握POST请求的工作原理和应用场景,对于Web开发至关重要。
268 18
|
1月前
|
.net HTTP请求类封装
`HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。
76 2
|
1月前
|
为何内存不够用?微服务改造启动多个Spring Boot的陷阱与解决方案
本文记录并复盘了生产环境中Spring Boot应用内存占用过高的问题及解决过程。系统上线初期运行正常,但随着业务量上升,多个Spring Boot应用共占用了64G内存中的大部分,导致应用假死。通过jps和jmap工具排查发现,原因是运维人员未设置JVM参数,导致默认配置下每个应用占用近12G内存。最终通过调整JVM参数、优化堆内存大小等措施解决了问题。建议在生产环境中合理设置JVM参数,避免资源浪费和性能问题。
97 3
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
178 15
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
62 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等