对接第三方接口时,第三方接口有特殊符号,我们进行回调时会报400,参数不能有特殊符号

遇到问题的示例

这个问题是当时要进行广告点击监测消息(微博->广告主/第三方)

  1. 微博广告平台将通过接口一发送用户的广告点击行为;
  2. 具体示例如下:监测链接请按照下方示例开发,非必填参数请根据业务需要自行 选择。
    http://adv.com?campaignid=xxx&ip={ip}&ua={ua}&clicktime={clicktime}&IMP={IMP}&ad_id={ad_id}&creative_id={creative_id}

这时候就因为参数带有{}就会进行报400错误,显示参数不符合规范。

原因

这个是因为Tomcat版本比较高后,对Url参数校验更加的严格了,所以传有{}就是非法参数。

解决

1、可以降低Tomcat版本,但是这个不太现在
2、那就只能自定义嵌入式的Tomcat服务器配置,自定义解析Url

/**
该函数是一个Java组件,实现了WebServerFactoryCustomizer接口,用于自定义嵌入式的Tomcat服务器配置。在customize方法中,它将一个ConnectorCustomizer lambda表达式添加到Tomcat服务器的连接器定制器列表中。该lambda表达式为连接器设置了一个属性relaxedQueryChars,其值为.,_+{},表示在URL查询字符串中可以使用这些字符,而不会被解析为特殊字符。这有助于避免一些URL编码的问题。
*/
@Component
public class EmbeddedTomcatConfig  implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.addConnectorCustomizers(connector -> connector.setAttribute("relaxedQueryChars", ".,_+{}"));
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值