使用REST调用从Project Online签出项目
问题描述:
首先,我确实通过Web界面验证了是否具有签出项目的权限。现在,我试图使用REST调用复制该结帐,并且无法通过'HTTP/1.1 403 FORBIDDEN'。使用REST调用从Project Online签出项目
CloseableHttpClient httpclient = WinHttpClients.createDefault();
// url = http://<site>/ProjectServer/Projects(guid'xxxx')/checkOut
HttpPost post = new HttpPost(baseURL + URL);
post.setHeader("Accept", "application/json;odata=verbose");
post.setHeader("Content-type", "application/json");
post.setHeader("X-RequestDigest", getDigest());
post.setEntity(new StringEntity(""));
CloseableHttpResponse response = httpclient.execute(post);
response.close();
httpclient.close();
关于我在做什么错误或在调用堆栈中丢失的任何想法?
答
HTTP 403表示服务器可以访问资源并处理请求,但由于权限拒绝采取任何进一步的操作。请参阅下面的说明。
例如:如果支持,管理员是项目中定义的两个角色,并且只有管理员有权创建新资源。
@RolesAllowed("Admin")
@POST
@Consumes("application/json")
public Response createProject(Project p)
{
..
}
如果请求被用户“支持”,该服务可以验证用户“支持”,但将与403拒绝为用户没有“管理员”权限作出。
尝试将验证标头添加到合法用户,看看它是否能解决您的问题。
谢谢你的回复,但正如我上面所说,我“应该”已经拥有适当的权限 - 根据管理员,我有'完全控制'。使用WinHttpClients会自动将NLTMAuthentication标头添加到请求。我已要求管理员自己尝试请求,但我没有收到回复。 –
这个问题突然解决了,我没有采取任何行动。上面的代码可以像广告一样工作。 –