使用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拒绝为用户没有“管理员”权限作出。

尝试将验证标头添加到合法用户,看看它是否能解决您的问题。

+0

谢谢你的回复,但正如我上面所说,我“应该”已经拥有适当的权限 - 根据管理员,我有'完全控制'。使用WinHttpClients会自动将NLTMAuthentication标头添加到请求。我已要求管理员自己尝试请求,但我没有收到回复。 –

+0

这个问题突然解决了,我没有采取任何行动。上面的代码可以像广告一样工作。 –