使用 Spring Boot 将 SharePoint 用作一种 CMS
Use SharePoint as a kind of CMS using Spring Boot
我正在使用 Spring Boot 在 SharePoint 中为我的应用程序存储文件(基本上是尽可能多的格式 - 但考虑图像、文档),该应用程序部署在 SAP 的 Cloud Foundry 中。我几乎遵循了 this post's answer (and copied all four files from there) and I got a github repo 中提到的步骤,这些步骤几乎实现了同样的事情。我已经关注了他们,但有些东西对我不起作用。 (请参阅 Whosebug link 以进一步了解我在说什么)
SharePointServiceCached.java 中的方法调用顺序是
parseExecutionDateTime() -> receiveSecurityToken() -> getSignInCookies(securityToken) -> getFormDigestValue(cookies)
我收到了安全令牌(正如我从日志中检查的那样),但这是我收到的错误消息:
Document upload failed!org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [403 FORBIDDEN]
我为此尝试过的事情:
- 向请求添加了 SSL 部分(请参阅列表末尾的代码),这似乎只会使情况变得更糟。
- 向 headers 添加了用户代理,但没有任何区别。
- 将端点域从
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 获取文件。我该怎么做?
提前致谢。
知道了。我只需要发送我想要存储文件的路径。
https://protected1.sharepoint.com/sites/protected2/_api/web/GetFolderByServerRelativeUrl(%27Shared%20Documents/Another%20Folder%27)/files/add(url=%27" + documentID + "%27,overwrite=false)
我现在正在随机生成 documentID。
我正在使用 Spring Boot 在 SharePoint 中为我的应用程序存储文件(基本上是尽可能多的格式 - 但考虑图像、文档),该应用程序部署在 SAP 的 Cloud Foundry 中。我几乎遵循了 this post's answer (and copied all four files from there) and I got a github repo 中提到的步骤,这些步骤几乎实现了同样的事情。我已经关注了他们,但有些东西对我不起作用。 (请参阅 Whosebug link 以进一步了解我在说什么)
SharePointServiceCached.java 中的方法调用顺序是
parseExecutionDateTime() -> receiveSecurityToken() -> getSignInCookies(securityToken) -> getFormDigestValue(cookies)
我收到了安全令牌(正如我从日志中检查的那样),但这是我收到的错误消息:
Document upload failed!org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [403 FORBIDDEN]
我为此尝试过的事情:
- 向请求添加了 SSL 部分(请参阅列表末尾的代码),这似乎只会使情况变得更糟。
- 向 headers 添加了用户代理,但没有任何区别。
- 将端点域从
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 获取文件。我该怎么做?
提前致谢。
知道了。我只需要发送我想要存储文件的路径。
https://protected1.sharepoint.com/sites/protected2/_api/web/GetFolderByServerRelativeUrl(%27Shared%20Documents/Another%20Folder%27)/files/add(url=%27" + documentID + "%27,overwrite=false)
我现在正在随机生成 documentID。