起因

对于微服务之后发请求,目前使用feign是比较多的,对外部服务也是同样支持的,有时间我们会有这样的情况,post请求时,不是使用的json raw的方式,而是使用了application/x-www-form-urlencoded这种方式,对于feign来说,这种方法的post默认是不被支持的,我们需要对feign进行一个扩展。

一般,一个POST的请求是这样的,它采用application/x-www-form-urlencoded的方式进行提交

curl -X POST \https://auth.beyondtime-stage.io/auth/realms/master/protocol/openid-connect/token \-H 'cache-control: no-cache' \-H 'content-type: application/x-www-form-urlencoded' \-d 'username=admin&password=pass123&client_id=admin-cli&grant_type=password'

解决方案

添加编码转换器

    /*** 转换器.*/@Componentpublic class FeignConfiguration {@BeanEncoder feignFormEncoder(ObjectFactory<HttpMessageConverters> converters) {return new SpringFormEncoder(new SpringEncoder(converters));}}

feigenClient的post方式

@FeignClient(name = "keycloak", url = "http://192.168.4.26:8080/auth", configuration = FeignConfiguration .class)
public interface KcUserClient {@RequestMapping(value = "/realms/demo/protocol/openid-connect/token",method = RequestMethod.POST,consumes = "application/x-www-form-urlencoded")KeycloakAccessToken login(@RequestBody AuthTokenRequest authTokenRequest);
}

调用

AuthTokenRequest authTokenRequest = new AuthTokenRequest();
authTokenRequest.setClient_id("sms");
authTokenRequest.setGrant_type("password");
authTokenRequest.setPassword("123456");
authTokenRequest.setUsername("test");
authTokenRequest.setClient_secret("877e6236-2326-4837-bdaa-94ec61a95526");
var result=kcUserClient.login(authTokenRequest);

结果的响应

愿与诸君共进步,大量的面试题及答案还有资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系,可以微信搜索539413949获取,最后祝大家都能拿到自己心仪的offer

springcloud~feign POST form-url-encoded data相关推荐

  1. springcloud Feign动态调用url,动态header,踩坑401及400报错

    关于feignclient,昨天踩了不少坑,今天整理一下做个记录. 最终代码如下: @FeignClient( name = "idap-system", url = " ...

  2. SpringCloud Feign声明式服务调用

    SpringCloud Feign声明式服务调用 1. 加入pom依赖 2. Application.java上声明@EnableFeignClients 3. @FeignClient声明接口调用服 ...

  3. SpringCloud Feign 传参问题及传输Date类型参数的时差

    1.多参数表单类型传输 @PostMapping("/service/system/advertiser/save")Response<Boolean> saveAdv ...

  4. 【转载】PHP报错分析(Corrupted encoded data detected in)

    一.执行PHP Zend加密文件报错 现象: 打开网站,出现以下错误 Fatal error: Unable to read **** bytes in 或者是 Fatal error: Corrup ...

  5. SpringCloud feign 的三种超时时间配置

    1.负载均衡 Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错.Feign 的负载均衡底层用的是 Ribbon,其配置如下: ribbon:ReadT ...

  6. springcloud Feign断路器实战和问题总结

    springcloud Feign断路器实战和问题总结 断路由是防止该服务调用其他外服务时,外服务宕机或者出差时,影响到本服务的宕机,引起大面积的瘫痪,所以才有了断路由的由来. springcloud ...

  7. 浏览器中的data类型的Url格式,data:image/png,data:image/jpeg! 收藏 苏生不惑 发表于 4年前 阅读 3943 收藏 3 点赞 0 评论 0 腾讯云·

    浏览器中的data类型的Url格式,data:image/png,data:image/jpeg! 收藏 苏生不惑 发表于 4年前 阅读 3943 收藏 3 点赞 0 评论 0 腾讯云·云上实验室:开 ...

  8. SpringCloud Feign工作原理基本理解

    Feign介绍 Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端.Spring Cloud引入Feign并且集成了Ribbon实现客户端负载均 ...

  9. Feign、OpenFeign及SpringCloud Feign的区别

    Feign.OpenFeign及SpringCloud Feign的区别 1. 三者概念 2. 依赖配置 1. 三者概念 Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服 ...

最新文章

  1. 图表对比详解:亚马逊、微软和谷歌云的机器学习即服务哪家强
  2. 入手ipod touch4
  3. 对python装饰器几种常见方式的使用与理解
  4. import和require的区别
  5. Linux钩子拦截删除文件,在Linux中保存钩子文件
  6. 普罗米修斯监控java项目_java学到什么程度可以出去实习?
  7. Jmeter 的json Extractor
  8. 使用独立PID namespace防止误杀进程
  9. FFMPEG解码H264成YUV
  10. 整合UWALOHA和VBF
  11. 备案网站未正规绑定服务器,网站备案对收录到底有没有影响
  12. 去掉无序列表前默认加上的小圆点——实战练习需到的问题解决办法mark
  13. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。
  14. 订单能否按时交期?制造企业必须面对这几个问题
  15. python matplotlib 画图保存图片简单例子
  16. 机器学习(9)--神经网络
  17. JDK1.8新特性 Optional判空详解,简化判空操作
  18. Outlook提示无法保存该附件。无法创建文件......
  19. 计算机网络知识点总结——第六章应用层
  20. 【开发心得】java轻量级rpc调用,springBoot集成jsonrpc4j使用

热门文章

  1. 揭秘郭盛华在世界的排名,才华与颜值并存的男神
  2. php二维数组快速排序,php 二维数组快速排序算法
  3. Ubuntu下载并安装numactl-devel包
  4. 如何在拼多多开店,各大电商平台都差不多
  5. 被判虚假交易要怎么申诉,申诉技巧
  6. php重新编译curl扩展,在Linux安装php的curl扩展,并支持https请求,重新编译法
  7. 怎样将蓝牙耳机与Apple Watch配对?
  8. matlab能给图像编组么,Matlab如何画箱线图群组
  9. 转: 关于UI开发(总结一些技术和一些论坛牛人讨论)
  10. Redis持久化机制 RDB、AOF