WebView

时间:2017-10-27 14:00:57

标签: android webview base64 android-webview

我遇到了字符串编码的问题。首先,让我解释一下背景:

我需要发帖并在webView中加载内容。对于这个要求,我需要使用webView.postUrl(String url,byte [] postData)。

我看到很多使用此方法的示例以及EncodingUtils.getBytes(“stringToEncode”,“base64”)。

好消息是这对我有用。坏消息是这个类已被弃用,您需要将下一个代码添加到gradle文件中:

android {
    useLibrary 'org.apache.http.legacy'
}

我想避免这种情况并按原样使用。

据我所知,这个已弃用的类的替换是android.util.Base64。

我尝试了下一个代码但没有成功:

webView.postUrl("url", Base64.encode("paramsToEncode".getBytes(),Base64.DEFAULT));

webView.postUrl("url", Base64.encode("paramsToEncode".getBytes(StandardCharsets.UTF_8),Base64.DEFAULT));

根据EncodingUtils的文件:

  

将指定的字符串转换为字节数组。如果charset不是   支持使用默认系统字符集。参数:data -   要编码的字符串charset - 所需的字符编码返回:   生成的字节数组。

Base64的文档:

  

输入字节:要编码的数据标志int:控制的某些功能   编码输出。传递DEFAULT会导致遵循的输出   RFC 2045.返回byte []

所以我不知道我做错了什么。如果你在解决这类问题时我会感激一些评论:)。

1 个答案:

答案 0 :(得分:0)

不确定为什么你的例子不起作用,但下面的代码似乎对我有用:

webView.postUrl(url, urlParams.getBytes(Charset.forName("UTF-8")));