java - 当公司不接受 Base64 但坚持 JSON API 调用时如何传输二进制 pdf 数据

标签 java json

说真的。

有一段时间我一直在努力寻找这个难题的答案。

如果对String进行编码,请求大小太大,公司无论如何也不会采用Base64。他们实际上想要二进制代码,但是是 JSON 格式的。任何人都可以阐明他们认为其他人可能会如何做到这一点吗?目前我正在这样处理;

    String addressProof = null;

    if (proofRequired)
    {
        Part filePart = request.getPart("proof_of_address");
        addressFileName = getSubmittedFileName(filePart);
        InputStream fileContent = filePart.getInputStream();

        final byte[] bytes = IOUtils.toByteArray(fileContent);
        addressProof = new String(bytes);
        //byte[] bytes64 = Base64.encodeBase64(fileBytes);
        //addressProof = new String(fileBytes);

        fileContent.close();
    }

是我太迟钝了,还是这整个请求有点缺陷。

非常感谢。

最佳答案

您可以将其作为十六进制字符串发送(或接收)。请参阅how-to-convert-a-byte-array-to-a-hex-string-in-java .

示例输出为(如果包含在 JSON 对象中):

{
    "content": "C5192E4190E54F5985ED09C6CD0D4BCC"
}

或者只是普通的十六进制字符串:“C5192E4190E54F5985ED09C6CD0D4BCC”

您不必一次写(或读)所有内容。您可以打开两个流(输入和输出),然后传输数据。从文件到响应输出流或从请求输入流到文件。

抱歉,我不确定您是否想发送字节或接收字节。

关于java - 当公司不接受 Base64 但坚持 JSON API 调用时如何传输二进制 pdf 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43846000/

相关文章:

java - Reg~x 代表 N~number

java - 使用 Mockito 调用多个其他方法的方法的单元测试

java - 如何通过添加更多字符来判断字符串是否可以匹配正则表达式

c++ - 使用 curlpp 发布和接收 JSON 负载

javascript - 在 HTML 中插入对象数据

java - Eclipse 中的 Servlet - 放置静态内容的位置

java - 通过 Hibernate Search 将 Hibernate Criteria API 与 Lucene 结合起来?

iphone - JSonKit反序列化问题

python - 从 JSON 文件创建元组

javascript - 将 JSON 转换为 Javascript 中的 map 列表