在我的Android应用程序中,我使用标记为java.util.Base64
和URL_SAFE
的{{1}}编码和解码。
但是,当我尝试使用NO_WRAP
在我的C#应用程序中解码它时,我回来了HttpServerUtility.UrlTokenEncode
。在此状态下,我的编码字符串也无法在Android应用程序上解码。
我错过了什么? null
标志是否确保Base64字符串没有URL_SAFE
,+
以及任何额外的填充?为什么/
不接受Base64值?
I was using this post as reference, for anyone who is interested.
答案 0 :(得分:1)
UrlTokenEncode
返回null
因为我传递的是string
而不是UrlToken
。
坚持使用Android中的编码/解码的URL_SAFE
和NO_WRAP
Base64标记,我设法将我的C#应用程序更改为以url_safe方式解码/编码。
public string UrlEncode(string str)
{
if (str == null || str == "")
{
return null;
}
byte[] bytesToEncode = System.Text.UTF8Encoding.UTF8.GetBytes(str);
String returnVal = System.Convert.ToBase64String(bytesToEncode);
return returnVal.TrimEnd('=').Replace('+', '-').Replace('/', '_');
}
public string UrlDecode(string str)
{
if (str == null || str == "")
{
return null;
}
str.Replace('-', '+');
str.Replace('_', '/');
int paddings = str.Length % 4;
if (paddings > 0)
{
str += new string('=', 4 - paddings);
}
byte[] encodedDataAsBytes = System.Convert.FromBase64String(str);
string returnVal = System.Text.UTF8Encoding.UTF8.GetString(encodedDataAsBytes);
return returnVal;
}