首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Base64字符串作为选项传递给解析器

将Base64字符串作为选项传递给解析器
EN

Stack Overflow用户
提问于 2016-11-03 20:48:30
回答 1查看 391关注 0票数 0

我构建了一个Java应用程序,它需要接收一个Base64参数作为命令行参数。

我使用解析JNLP内部的参数。只有两个参数,其中一个是JSON,在这个JSON中有一个Base64字符串。

问题是,Base64字符串在结尾处填充"=“(相等字符/等号),解析器在识别字符串作为参数的一部分时遇到困难,而是尝试将"=”计算为参数的key=value分隔符,并处理以下异常:

有没有办法摆脱这个字符,或者让解析器忽略它?

CLI选项是使用以下代码生成的:

代码语言:javascript
运行
复制
Option appletBehaviourConfigJSONOption = Option.builder("J")
            .longOpt("appletBehaviourConfigJSON")
            .hasArg()
            .argName("JSON")
            .desc("JSON config")
            .build();
clioptions.addOption(appletBehaviourConfigJSONOption);

CommandLineParser cliparser = new DefaultParser();
CommandLine cmd = null;
try {
    cmd = cliparser.parse(clioptions, args);
} catch (ParseException e) {
    e.printStackTrace();
}

这是来自JNLP的电话:

代码语言:javascript
运行
复制
<argument>-appletBehaviourConfigJSON { "appletBehaviourSignatureType": "HASH", "appletBehaviourHashList": [{"id": "1234", "hash": "ZjQzZDM1NTJiYzBhYmZmMDBlNTc0NjIyZDExMDhhM2Y5MmVlOWJjZAo="}, {"id": "5678", "hash": "ZjQzZDM1NTJiYzBhYmZmMDBlNTc0NjIyZDExMDhhM2Y5MmVlOWJjZAo="}], "appletBehaviourCookies": [{"name": "JSESSIONID", "value": "2edee5627c84937f707bdd390b1c"}, {"name": "STICKY", "value": "ASD123213123adsf"}], "appletBehaviourPostURL": "http://example.org", "stampSelection": "WHITE", "setStampAll": true}</argument>

当我将两个散列上的'=‘改为'a’时,解析器按预期工作(当然,该选项现在有一个无效的Base64 )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 21:17:09

看上去,commons不像等号那样处理选项的名称和值之间的空白。

因此,尝试使用等号而不是空白,如

代码语言:javascript
运行
复制
-appletBehaviourConfigJSON={...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40410970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档