webview 上 postUrl 发送参数过程中数据丢失或错误 的问题

来源:互联网 发布:全国房价数据库 编辑:程序博客网 时间:2024/06/05 10:31

这几天在数据访问中加入了加密,基本上所有的功能都OK,但其中有个地方居然出了问题。

那里用到了android 的 webview 来展示页面。webview需要用post来传递参数。于是问题出现了,后台解析中发现参数错误。

之前有因为String 和byte[]转行时,数据丢失的问题,于是一直再那方面入手,最后不行了,观察数据终于发现,数据中存在“+”号,到后台了,“+”号全部都不见了。

在网上搜了发现有这个问题的人很少,难道他们都做得比较好,早早就避过了这个问题了么?

由于数据是加密过的BASE64,会不时出现一些符合,如

webview.postUrl("www.testurl.com","data=abcdefg");

加密过后变成了。

webview.postUrl("www.testurl.com","data=dhfakjsdfhksdhf+dfasjkdhf+adsfkhasld");

传到后台解析:

key:data

value:dhfakjsdfhksdhf dfasjkdhf adsfkhasld

懂的人知道”+“号在url中是特殊字符,所以。。。太黄太暴力被和谐了。

有人试过替换字符。。。这个搞应该可行,有些麻烦。。。这种情况应该很多,应该有专门的处理,于是。。。

        try {
            postData  = URLEncoder.encode(data.toString(),"utf-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

URLEncoder就对字符进行了比较好的处理了。

最后。。。。

webView.postUrl(“www.testurl.com”,("data="+postData).getBytes());

搞定。

1 0
原创粉丝点击