【发布时间】:2022-07-12 01:17:12
【问题描述】:
我正在使用带有 OpenFeign 的 Spring Boot,并且我正在尝试将文件上传到 Backblaze B2。
我已经有 b2_authorize_account 和 b2_get_upload_url 端点工作。现在我正在尝试向b2_upload_file 发送请求。
我对 Feign 客户端请求的代码是
@PostMapping()
String b2UploadFile(URI uri,
@RequestHeader("Authorization") String uploadUrlToken,
@RequestHeader("X-Bz-File-Name") String fileName,
@RequestHeader("Content/Type") String contentType,
@RequestHeader("X-Bz-Content-Sha1") String contentSha1,
byte[] file);
当我执行代码时,我得到一个java.net.SocketException: Connection reset 异常。我认为服务器正在关闭连接。
我使用 Postman 测试了端点并且它工作正常,我能够上传我的文件。
我应用了相同的标头和值,Postman 和 OpenFeign 之间的区别在于,在 Postman 中我点击了 Body -> 二进制 -> 上传文件,而在 OpenFeign 中我使用 byte[] 传递文件,没有任何注释。
在 API 文档中,它还说我需要 Content-Length 标头,但是当我将它包含在 OpenFeign 中时,我遇到了数字格式异常。我无法解决它,但根据我读过的内容,OpenFeign 应该会自动执行此操作。我也没有在 Postman 中包含标题,它仍然可以工作,因为 Postman 默认也包含它,所以我认为这不是问题。
我尝试用@RequestBody byte[] file注释文件,使其成为一个多部分文件,使用文件类型,使用字符串类型,使用输出流和输入流。
API 说:
不允许使用 JSON 参数。要上传的文件是消息体,不以任何方式编码。它不是 URL 编码的。它不是 MIME 编码的。
【问题讨论】:
标签: java spring spring-boot openfeign backblaze