Java 解码base64编码值

Java 解码base64编码值,java,base64,decode,Java,Base64,Decode,我有一个base64编码值的x509crl文件的内容。我向servlet发出了GET请求。通过在浏览器中粘贴以下URL,将弹出文件下载对话框 "http://host:port/myServlet?content=base64_encoded_value" 我可以下载一个文件,但我无法打开一个文件。根据我工作坊的一位pki专家的说法,若crl文件的内容是正确的,那个么操作系统应该可以很好地打开它 下面是我的servlet类中的doGet方法。我想知道我犯了什么错误 protected void

我有一个base64编码值的x509crl文件的内容。我向servlet发出了GET请求。通过在浏览器中粘贴以下URL,将弹出文件下载对话框

"http://host:port/myServlet?content=base64_encoded_value"
我可以下载一个文件,但我无法打开一个文件。根据我工作坊的一位pki专家的说法,若crl文件的内容是正确的,那个么操作系统应该可以很好地打开它

下面是我的servlet类中的doGet方法。我想知道我犯了什么错误

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    String content = request.getParameter("content");
    response.setContentType("application/pkix-crl");
    response.setHeader("Content-Disposition","attachment;filename=test.crl");
    byte[] byteArray = Base64.decodeBase64(content.getBytes());
    ServletOutputStream sos = response.getOutputStream();
    sos.write(byteArray);
    sos.close();
}

我使用的是commons-codec-1.3,示例中没有包含任何异常处理

因此您发送请求:

http://host:port/myServlet?content=base64_encoded_value
由servlet中的方法使用的:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
让我们看看你在做什么:

    String content = request.getParameter("content");
似乎字符串内容现在将包含base64\u编码的\u值 接下来,告诉客户我们发送的内容,这似乎是合理的

    response.setContentType("application/pkix-crl");
    response.setHeader("Content-Disposition","attachment;filename=test.crl");
然后我们这样做:

    byte[] byteArray = Base64.decodeBase64(content.getBytes());
这似乎是试图将字符串base64_编码的_值转换为字节,然后对其进行解码。它们不是以base64编码的,因此byteArray可能不包含任何内容。 它的其余部分将不向响应中的输出流写入任何内容

    ServletOutputStream sos = response.getOutputStream();
    sos.write(byteArray);
    sos.close();
}

我猜您实际上是想动态读取文件或创建有效的crl,然后对其进行编码并发送,而不是试图解码字符串参数。

在读取更多线程后,我意识到了我的问题。我发布的简单逻辑工作正常,但是当我在URL中传递原始base64字符串作为查询字符串的一部分时,我应该对该值进行URL编码,否则当servlet接收到数据时,数据会被更改。在url编码base64字符串之后,我能够下载一个有效的crl

下面的帖子给了我一个答案


用什么打开它?如何尝试打开该文件?您已下载证书验证列表。操作系统需要一个应用程序来理解如何使用它。你希望用它做什么?我不知道。有人告诉我,如果crl文件正确,操作系统应该知道如何打开它。[更新]我指的是windows平台。我刚刚看到我的同事刚刚打开了示例crl文件。但不是我要下载的文件。我觉得有些不对劲。你用的是什么操作系统?哪个应用程序打开了你同事系统上的文件?如果您不知道,请显示屏幕截图。当您双击它时,是否会收到消息说它无效,是否会出现其他错误,或者发生了什么?请尽可能多地提供信息。如果用编辑器打开,内容是什么?@CharliesS:是的,我想动态创建一个文件/有效的crl。我将对其进行编码并测试代码。再次感谢你!