http请求参数编码问题

给某api发送http请求,结果查不到数据;而api开发者自测可以查到数据。僵持不下。


经过分析发现,我的url是经过urlencode编码的(传出去的中文变成%E5%B2这种),而api开发者的url是明文传输中文。


我通过httpclient发出的请求,使用uribuilder.addParameter追加参数,而该方法会自动将参数按utf-8编码,导致我传出去的url是%E5%B2。而api端没有解码,导致解析成错误的文字,从而查不到数据。


同样的,前端ajax请求,默认是utf-8编码。而springmvc web.xml中配置了如下字符集过滤器,会自动将utf-8编码的value解码,从而实现自动编码解码。如果没配置该字符集过滤器,则会解码失败。

    <!-- 字符集 过滤器 -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值