【问题标题】:To Convert Base64 URL to Base64 Encoded format in WSO2 EI 6.3.0在 WSO2 EI 6.3.0 中将 Base64 URL 转换为 Base64 编码格式
【发布时间】:2020-02-06 10:35:09
【问题描述】:

我收到来自Gmail API 的电子邮件附件(图片),它返回base64url 编码字符串。但实际编码与此 gmail api 不同(“/”替换为“_”,“+”替换为“-”等)。我想获取原始的 base64 编码字符串而不是 base64 url​​ 编码格式。我应该从 gmail api 响应中替换这两个符号(“/”、“+”)还是有人可以帮我实现这个吗?我正在尝试使用 WSO2 EI 6.3.0。

 <call>
                    <endpoint>
                        <http method="get" uri-template="{+uri.var.gmail.apiUrl}/{+uri.var.gmail.apiVersion}/users/{+uri.var.gmail.userId}/messages/{+uri.var.id}/attachments/{+uri.var.attachmentId}"/>
                    </endpoint>
                </call>
 <property description="emailAttachment" expression="//data/text()" name="emailAttachment" scope="default" type="STRING"/>

例如,

来自 Gmail API: 调用后,它会在“data”键中返回以下值。

_9j_4AAQSkZJRgABAQAASABIAAD_4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAPwKADAAQAAAABAAAL0AAAAAD_....

原始 Base64 编码值:

/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAPwKADAAQAAAABAAAL0AAAAAD/....

【问题讨论】:

  • 不,不是。我期待 Base64 编码值。我需要将来自 gmail api 的 base64url 编码值转换为 base64 编码值。
  • 你真的读了吗?
  • 您要使用哪种语言进行转换?
  • 嗨@ziganotschka,我正在WSO2 EI 中执行此操作。为此,我已经包含了从 gmail 获取 base64url 编码字符串以进行附件的方式。所以我需要在 WSO2 EI 中完成这个。我也可以使用脚本。例如。 &lt;script language="js"&gt;&lt;![CDATA[var log=mc.getServiceLog(); var emailAttachment = mc.getProperty('emailAttachment'); emailAttachment=emailAttachment.replaceAll("_","/").replaceAll("-","+"); log.info("Modified Content is:" + emailAttachment); mc.setProperty("modifiedemailAttachment",emailAttachment)]]&gt;&lt;/script&gt;

标签: base64 gmail-api base64url


【解决方案1】:

在 Javascript 中,最简单的方法是使用 replace() 方法:

newData=data.replace(/-/g, '+').replace(/_/g, '/')

【讨论】:

  • 嗨@ziganotschka,如果我在我的脚本调解器中尝试了上述操作,除此之外,它将通过ERROR - ScriptMediator The script engine returned an error executing the inlined js script function mediate com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.EvaluatorException: The choice of Java method java.lang.String.replace matching JavaScript argument types (function,string) is ambiguous; candidate methods are: class java.lang.String replace(char,char) class java.lang.String 之类的异常,如果我替换这两个符号,它是否适用所有情况?
  • 我不确定你的变量 data 是什么。 replace() 是一种需要字符串作为参数的方法。我看不出它为什么不能在所有情况下都起作用。
  • 嗨@ziganotschka,我也在检查。但上面提到的 replaceAll() 工作正常。上面的 emailAttachment 是 base64url 编码的字符串。我需要做的是我想从 base64 url​​ 编码值中获取 base64 编码字符串?如果我只是替换这两个适用于所有情况的符号(即从 base64url 转换为 base64 编码)?
  • 是的。 +/ 对于 toBase64-_ 对于 toBase64URL 是唯一的区别。
  • 嗨@ziganotschka,我已经完成了从base64url编码转换为base64编码格式的工作,方法是替换两个可以正常工作的符号。感谢您的支持
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多