我正在使用 Spring Boot 在 SharePoint 中为我的应用程序存储文件(基本上是尽可能多的格式 - 但按照图像、文档的方式思考),该应用程序部署在 SAP 的 Cloud Foundry 中。我几乎遵循了这篇文章的答案中提到的步骤(并从那里复制了所有四个文件),并且我得到了一个github repo,它几乎实现了同样的事情。我跟着他们,但有些东西对我不起作用。(请参阅 StackOverflow 链接以进一步了解我正在谈论的内容)
SharePointServiceCached.java 中的方法调用顺序是
parseExecutionDateTime() -> receiveSecurityToken() -> getSignInCookies(securityToken) -> getFormDigestValue(cookies)
我收到安全令牌(正如我从我的日志中检查的那样)但这是我的错误消息得到:
Document upload failed!org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [403 FORBIDDEN]
我为此尝试过的事情:
- 在请求中添加了 SSL 部分(参见列表末尾的代码),这似乎只会让情况变得更糟。
- 将用户代理添加到没有区别的标题中。
- 再次将端点域更改
https://protected1.sharepoint.com/sites/protected2
为https://protected1.sharepoint.com/
哪个,不知何故使情况变得更糟。(很明显,protected1 和 protected2 是改名了) - 使自己(我传递其凭据的人)成为具有所有特权的站点所有者。
- 我检查了日志,凭据正确传递。
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder)
{
CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(new NoopHostnameVerifier())
.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
RestTemplate rest = new RestTemplate(requestFactory);
builder.configure(rest);
return builder.build();
}
此外,以前我使用 CMS 来处理返回与上传文件关联的文档 ID 的相同内容。我在 SharePoint 中启用了文档 ID 选项,并希望以类似方式使用它,即上传文件 -> 获取文档 ID 并存储它 -> 在需要时使用该文档 ID 来获取文件。我怎样才能做到这一点?
先感谢您。