无法使用SharePoint文件下载REST API下载docx文件&;JAVA

无法使用SharePoint文件下载REST API下载docx文件&;JAVA,java,sharepoint,Java,Sharepoint,我从SharePoint服务器获得附加的img值作为响应,但无法将其写入docx文件。使用Postman的文件下载API给出了相同的响应,如果我将Postman响应保存到docx文件,那么它保存得很好,但不是从Java端保存的。如果我使用Java对docx文件写入相同的响应,则该文件已损坏 我正在使用此REST API从Sharepoint下载文件: SiteURL/_api/web/getfilebyserverrelativeurl('relativeURL/Shared Documents

我从SharePoint服务器获得附加的img值作为响应,但无法将其写入docx文件。使用Postman的文件下载API给出了相同的响应,如果我将Postman响应保存到docx文件,那么它保存得很好,但不是从Java端保存的。如果我使用Java对docx文件写入相同的响应,则该文件已损坏

我正在使用此REST API从Sharepoint下载文件:

SiteURL/_api/web/getfilebyserverrelativeurl('relativeURL/Shared Documents/test.docx')/$value

最有可能的情况是服务器正在以二进制(
application/octet-stream
)的形式返回文档(docx)。您的代码保存文档的字符串表示形式:

ResponseEntity response=restemplate.exchange(fileUrl,HttpMethod.GET,request,String.class);
字符串responsestromsharepoint=response.getBody();
这就是应用程序无法解码文件的原因。而是保存服务器返回的确切二进制(字节),如以下代码段所示:

ResponseEntity response=restemplate.exchange(fileUrl,HttpMethod.GET,request,byte[].class);
字节[]responsestrofromsharepoint=response.getBody();

代码的其他部分似乎没有问题。

能否在填充ResponseStreamFromSharePoint的位置添加代码?作为预防措施,请将断点设置为
String ResponseStreamFromSharePoint=response.getBody()和调试,以检查响应正文是否确实包含合法文档。是的,响应正文从SP服务器给出了正确的响应,我将Java代码响应与邮递员的响应进行了交叉匹配。问题在于将其转换为文件时。很可能是由于将正文写入文件时的编码。您应该写入服务器返回的确切二进制(字节),而不是写入响应的字符串表示形式(
ResponseEntity
),使用
ResponseEntity
而不是
ResponseEntity
)。这样
response.getBody()
返回
byte[]
而不是
String
。像现在一样将其写入文件。