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

用到了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());

搞定。

时间: 2024-10-24 07:47:43

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

Jenkins. 安装过程中出现一个错误: No such plugin: cloudbees-folder

安装过程中出现一个错误: No such plugin: cloudbees-folder 安装插件,有时候会报类似的错误:An error occurred during installation: No such plugin: cloudbees-folder 上面的错误显示是,安装插件cloudbees-folder失败,是因为下载的Jenkins.war里没有cloudbees-folder插件 需要在网上下载:http://ftp.icm.edu.pl/packages/jenkin

Sql Server 因为触发器问题导致数据库更新报错“在触发器执行过程中引发了错误,批处理已中止”的问题处理

在维护一个非常旧的项目时,由于该项目版本已经非常老了,而且在客户现场运行的非常稳定,更要命的是本人目前没有找到该项目的代码,为了处理一个新的需求而且还不能修改程序代码,于是决定从数据库入手,毕竟该项目数据库的脚本还是可以操作的,那就在数据流的必经之路上拦截数据处理业务就是了,于是决定在一张业务表上加一个触发器,关于触发器的基础这里就不多说了,网上一搜一大堆,其实就是一张表的数据行被操作以后会针对被操作的数据行执行一段存储过程脚本,只不过这个存储过程比较特殊罢了,是专门侦听对表的操作然后由系统调用

hadoop安装过程中出现的错误

此次来记录一下我在安装Hadoop安装过程中出现的错误,安装过程参照慕课网林子雨教程进行安装,在尝试过程中出现的错误如下: 1.在安装Ubuntu时,新建虚拟电脑时,并没有在版本的输入框中有Ubuntu(64bit)的显示,得在电脑图标出现之前,进入blos开启CPU的虚拟化,然后才能正常显示 2.配置JAVA_HOME环境变量时,用vim进行在文件中语句输入,操作不会,后来知道用E键编辑,用i键插入,然后esc退出编辑,wq键保存文件并退出,完成文件更改 3.在将hadoop解压到/usr/l

Linux虚拟机安装过程中的常见错误

作为初学Linux的菜鸟,在安装过程中出现了各种各样的错误.在这里把我遇到的错误列出来与大家分享,也希望对初学的人有一些帮助.这里列举了几种常见网络配置问题并详述了其原因和解决方法.如虚拟机不能访问外部网络. 1.Xshell等工具连不上虚拟机的问题,如下图:首先.要保证虚拟机正常开机.并配置正确.其次.是电脑的网络配置. 打开电脑的控制面板->网络和Internet->网络和共享中心->点击更改适配设置.如图显示VMware Network Adapter VMnet1 已禁用.点击右

编译recovery及过程中的部分错误解决

你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源码中附带CWM源码 CWM 5 - Gingerbread CWM 6 - Jellybean 3, 下面我们进入真正的编译阶段,确保你已经使用“repo sync ”命令同步了最新的源码 进入源码的目录 放出以下命令:      make -j4 otatools 3.5, 如果你的机型不被CM1

sqlserver 使用游标过程中出现的错误

下面的见解是在使用游标的过程中做的日记.我也是第一次使用,如果有什么不对的地方请批评指正,大家一起努力. 1. 消息 16951,级别 16,状态 1,过程 usp_proc,第 16 行      变量 '@myref' 不能用作参数,因为在执行该过程前,不得为 CURSOR OUTPUT 参数分配游标. 这个问题是我在调用一个递归的.输出cursor output 的存储过程 create proc usp_proc( @level int @myref cursor varying out

SVN的安装与常用功能使用以及解决安装配置过程中的一些错误

SVN简介: SVN是Subversion的简称,是一个开放源代码的版本控制系统,将工程代码集中在服务器上进行一个统一的集中式管理,从而能够方便地控制代码版本,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subversion.说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的,而且通过使用SVN开发人员之间[学Java,到凯哥学堂kaige123.com]能够很方便的更新.提交工程代码,并且如果工程的版本有冲突还

anaconda命令行运行过程中出现的错误

在anaconda中使用jupyter时,出现各种bug,大多数是和tornado相关的问题,遇到这一问题一般是版本不匹配的原因,所以要对jupyter和tornado进行相应的版本匹配.如果使用anaconda过程中出现其他的属性错误等,要观察出现的错误所属包,然后尝试卸载当前包,重新安装新的版本的匹配包.一定要好好分析错误原因. 原文地址:https://www.cnblogs.com/jianglinliu/p/10493847.html

input type file onchange上传文件的过程中,遇到同一个文件二次上传无效的问题。

不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的.解释如下:input[type=file]使用的是onchange去做,onchange监听的为input的value值,只有再内容发生改变的时候去触发,而value在上传文件的时候保存的是文件的内容,你只需要在上传成功的回调里面,将当前input的value值置空即可.event.target.value='';