gpt4 book ai didi

java - 如何使用POST上传二进制数据

转载 作者:行者123 更新时间:2023-12-01 05:49:38 27 4
gpt4 key购买 nike

我的代码中有这样的内容:

String boundary = "thisIsMyBoundaryString";
StringBuilder body = new StringBuilder();
...
byte[] data = bos.toByteArray();
body.append(new String(data));
body.append("\r\n--" + boundary + "--\r\n");
String entity = body.toString();

我正在构建 POST 请求,需要插入一些二进制数据(JPEG 压缩位图)。

附加 byteArray 后,我想附加 newLine 和边界字符串,
但 StringBuilder 被损坏 - 似乎来自添加边界的字节
从那时起就变得不对齐
它们不再被解释为我的原始字符串,而是一些随机字符。

这是这里发生的事情吗?

我该如何解决这个问题?也许我应该在附加边界之前向 byteArray 添加一个填充字节?

向 POST 请求添加二进制数据的正确方法是什么?
请注意,此处不能选择使用 Base64 编码。

 

[编辑]
解决方案是使用MultipartEntity来发出此类请求
并忘记手动添加边界。

以下是相关代码 fragment :

FileBody bin = new FileBody(new File(Environment.getExternalStorageDirectory() + "/" + FILE_NAME));
MultipartEntity entity = new MultipartEntity();
entity.addPart("message", new StringBody("A message that goes with request"));
entity.addPart("file", bin);

(第三行必须位于 try/catch block 内,但为了便于阅读,我将其删除)

最佳答案

我认为你应该使用像 Apache HttpClient 这样的东西(或者可能在他们的 http-mime 模块中,我自己没有使用过),它可以执行多部分帖子。请参阅this question , 例如。像 JPEG 这样的二进制数据不是字符数据,确实不应该放入 String 中。

关于java - 如何使用POST上传二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com