代码之家  ›  专栏  ›  技术社区  ›  Leandro Ocampo

WebView中post的Base64编码

  •  1
  • Leandro Ocampo  · 技术社区  · 7 年前

    我面临一个字符串编码问题。首先,让我解释一下背景:

    我需要发表一篇文章并将内容加载到网络视图中。对于这个要求,我需要使用webView。postrl(字符串url,字节[]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 :

    将指定的字符串转换为字节数组。如果字符集不是 支持使用默认的系统字符集。参数:data-the 生成的字节数组。

    以及 Base64

    输入字节:编码标志int的数据:控制 RFC 2045。返回字节[]

    所以我不知道我做错了什么。如果您遇到这种问题,我将不胜感激:)。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Chris6647    7 年前

    不确定为什么您的示例不起作用,但以下代码似乎对我有效:

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