【发布时间】:2013-01-26 05:43:03
【问题描述】:
在 java 中执行以下操作时,我在 0: 37(十进制)异常处收到 Bad Base64 输入字符。
static void byteArrayToFile(byte[] bArray) {
try {
// Create file
String pathName = AppConfig.getInstance().getConfigValue("webapp.root") + File.separator + "temp"+File.separator+"heasas.pdf";
FileWriter fstream = new FileWriter(pathName);
BufferedWriter out = new BufferedWriter(fstream);
for (Byte b: bArray) {
out.write(b);
}
out.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
大家好,在收到来自第 3 方的 Soap 消息时,我编写了闲散的 sn-p 代码以获取 附件内容: 对象内容 = attachment1.getContent(); writePdf(内容);
private void writePdf(Object content) throws IOException, PrintException, DocumentException {
String str = content.toString();
byte[] b = Base64.decode(str);
byteArrayToFile(b);
}
这是我将字节数组转换为 pdf 的逻辑:
static void byteArrayToFile(byte[] bArray) {
try {
// Create file
String pathName = AppConfig.getInstance().getConfigValue("webapp.root") + File.separator + "temp"+File.separator+"heasas.pdf";
FileWriter fstream = new FileWriter(pathName);
BufferedWriter out = new BufferedWriter(fstream);
for (Byte b: bArray) {
out.write(b);
}
out.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
现在有人可以建议我解决方案吗......
【问题讨论】:
-
你能粘贴确切的异常堆栈跟踪吗?
e.printStacktrace()应该在您的catch块中发挥作用。 -
具体是哪一行导致了错误?我怀疑它是
out.write(b);,这意味着问题出在for (Byte b: bArray)中,它将您收到的byte[] bArray写入函数。因此,您需要查看函数调用中传递给bArray的内容。我们无法看到该值,因为您没有提供它。你应该学会使用调试器(或者至少是堆栈跟踪)来跟踪这样的错误。
标签: java soap pdf-generation