Java HttpClient Post请求发送数据乱码

来源:互联网 发布:癌症最新研究进展知乎 编辑:程序博客网 时间:2024/06/11 13:24

        描述:Web 客户端,利用 HttpClient 调用银行接口,银行的要求是:以 GBK 格式发送报文。

        情况:本地不管怎样调整编码格式,银行端接收到的中文总是处于乱码状态(英文和数字不乱码)。


        经过大量的资料查询,找到一些比较有用的资料。比如:这里

        由于调用银行接口,对于 IP 地址有限制,故本机并没有办法直接调用,必须要发送到服务器上才能正确调用。

        由于银行要求以 GBK 发送报文,所以新开了一个 Eclipse ,将 WEB 工程的所有文件编码都更改成 GBK 。

      

System.getProperties().list(System.out);   String csn =  Charset.defaultCharset().name();System.out.println("默认编码格式 = " + csn); 

        利用以上代码,本地运行时控制台输出:默认编码格式 = GBK。说明了本地 JDK 默认编码格式为 GBK。

        由于不能在本机调试银行接口,当发送到服务器(linux)之后,日志输出“默认编码格式 = UTF-8”,说明服务器 JDK 默认编码格式为 UTF-8.

        在代码中对 HttpClient 的编码各种设置都没有效果后,想着是否是 JDK 默认编码格式造成的问题。

        由于是 Web 工程,当 Tomcat 启动时候,可以对 JDK 进行参数的设置,于是找到了下面的代码:

       

set JAVA_TOOL_OPTIONS=-Dfile.encoding=GBK -Duser.language=en -Duser.country=USJAVA_OPTS="-server -Dfile.encoding=GBK -Duser.language=en -Duser.country=US" 

         Windows 下,修改  $TOMCAT_HOME/bin/catalina.bat 文件,添加第一行的代码。

       

        Linux 下,修改 $TOMCAT_HOME/bin/catalina.sh 文件,添加第二行代码。

      


       添加完成上述代码后,启动 Tomcat 时,JDK 默认编码已经被更改成 GBK,当再次访问银行接口时,中文报文传送正确,银行接受乱码问题解决。

0 0
原创粉丝点击