我在OpenFeign中使用Spring,并且我试图上传一个文件来备份B2。
我已经让b2_authorize_account和b2_get_upload_url端点工作了。现在我正试图向b2_upload_file发送一个请求。
我为冒充客户端请求提供的代码是
@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应该自动完成这个任务。我也没有包括邮递员的标题,它仍然工作,因为邮递员也包括在默认情况下,所以我不认为这是问题。
我尝试过用@RequestBody byte[] file对文件进行注释,使其成为一个多部分文件,使用文件类型,使用字符串类型,使用输出流和输入流。
API说:
不允许使用JSON参数。要上载的文件是消息体,不以任何方式进行编码。它不是URL编码的。它不是MIME编码的.
发布于 2022-05-26 06:55:19
来自评论中的讨论
OpenFeign不允许直接设置Content-Type头,因此必须指定:
@PostMapping(consumes = "b2/x-auto", produces = "application/json")原始答案:
在你发布的代码中,
@RequestHeader("Content/Type") String contentType,应该是
@RequestHeader("Content-Type") String contentType,https://stackoverflow.com/questions/72383360
复制相似问题