To Convert Base64 URL to Base64 Encoded format in WSO2 EI 6.3.0
我从 Gmail API 获取电子邮件附件(图片),它返回 base64url 编码字符串。但实际编码与此 gmail api 不同("/" 被替换为 "_" 并且 "" 被替换为 "-" 等)。我想获取原始的 base64 编码字符串而不是 base64 url?? 编码格式。我应该从 gmail api 响应中替换这两个符号("/","")还是有人可以帮我实现这个吗?我正在尝试使用 WSO2 EI 6.3.0。
1 2 3 4 5 6
| <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/....
- MIME电子邮件的Base64解码可能重复不起作用(GMail API)
-
不,这不对。我期待 Base64 编码值。我需要将来自 gmail api 的 base64url 编码值转换为 base64 编码值。
-
你真的读过吗?
-
您要使用哪种语言执行转换?
-
嗨@ziganotschka,我正在 WSO2 EI 中执行此操作。为此,我已经包含了从 gmail 获取 base64url 编码字符串以进行附件的方式。所以我需要在 WSO2 EI 中完成这个。我也可以使用脚本。例如。 <script language="js"><![CDATA[var log=mc.getServiceLog(); var emailAttachment = mc.getProperty('emailAttachment'); emailAttachment=emailAttachment.replaceAll("_","/").replaceA??ll("-","+"); log.info("Modified Content is:" + emailAttachment); mc.setProperty("modifiedemailAttachment",emailAttachment)]]>??
在 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编码格式的工作,方法是替换两个可以正常工作的符号。谢谢你的支持
-
@贾斯汀,我很高兴它有帮助!如果您发现我的回答有用,如果您能将其标记为已接受,我将不胜感激。