http请求参数编码问题

来源:互联网 发布:最新mac os x镜像下载 编辑:程序博客网 时间:2024/06/05 06:37

给某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>


原创粉丝点击