webview 上 postUrl 傳送引數過程中資料丟失或錯誤 的問題

銳湃發表於2015-12-02

這幾天在資料訪問中加入了加密,基本上所有的功能都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());

搞定。

轉自:http://blog.csdn.net/raining_heart/article/details/41256667

相關文章