Android中发送网络请求时参数为中文,导致请求的结果不正确的解决方法

  • 前几天做项目的时候,遇到一个问题。在我们客户端给服务器发送请求的时候,获取不到响应的结果。然后我就向我们这个项目的技术总监提了这个问题。
  • 技术总监说,你再发一次请求试试看,我去控制台看看是什么原因。一看是原来控制台输出的是乱码,所以获取不到响应的结果。


  • 我就问为什么会出现这种原因?


技术总监说是因为前台页面上参数的编码和后台对该参数的解码不一致导致的。我就问应该怎么解决?


技术总监说你可以用下面的方法解决


将你的中文参数在前台先进行Base64编码,我后台也用这种方式来解码。后台你不用管,只要前台进行简单的编码就行了。果然我试了一下,在代码里能够成功的获取到响应的结果了。来看一下输出的打印信息:

这里写图片描述

看,这就成功的打印出响应的结果了。说明这种解决方案成功了。

比如你的的中文参数是:

String str = "这是中文参数";

接下来对这个参数进行Base63编码:

/**
     * 请求地址参数传中文的时候用来编码用
     * 
     * @param str
     *            需要进行编码的中文字符
     * @return
     */
    public String getBase64String(String str) {
        if (s == null) {
            // 如果传入值为空,则返回null
            return null;
        } else {
            try {
            //将中文参数进行Base64编码,返回一个编码后的字符串。关键步骤
                String str = Base64.encodeToString(s.getBytes("UTF-8"),Base64.DEFAULT);
                // 将编码后的字符串的一些字符进行替换,关键步骤
                str = str.replaceAll("\\+", "-");
                str = str.replaceAll("\\/", "*");
                // 返回编码并替换过字符的字符串
                return str;
            } catch (Exception e) {
                // 编码出错,返回null并打印错误信息
                e.printStackTrace();
                return null;
            }
        }

    }

以上就是该编码的实现方法,将你需要进行编码的参数传入即可。so easy!

String str = "这是中文参数";
String str_Base64 = getBase64String(str);

传参时用str_Base64就好了。


下面给出最关键的jar包,需要在项目中引用该jar包,之后上面的一些API你才可以调用。引用很简单,复制粘贴到libs目录下即可。

这里写图片描述

jar包资源下载地址在文章的末尾有给出。


点击我下载Jar包资源


每天进步一点点!加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值