2017-09-14 72 views
0

首先,我確實通過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(); 

關於我在做什麼錯誤或在調用堆棧中丟失的任何想法?

回答

0

HTTP 403表示服務器可以訪問資源並處理請求,但由於權限拒絕採取任何進一步的操作。請參閱下面的說明。

例如:如果支持,管理員是項目中定義的兩個角色,並且只有管理員有權創建新資源。

@RolesAllowed("Admin") 
@POST 
@Consumes("application/json") 
public Response createProject(Project p) 
{ 
    .. 
} 

如果請求被用戶「支持」,該服務可以驗證用戶「支持」,但將與403拒絕爲用戶沒有「管理員」權限作出。

嘗試將驗證標頭添加到合法用戶,看看它是否能解決您的問題。

+0

謝謝你的回覆,但正如我上面所說,我「應該」已經擁有適當的權限 - 根據管理員,我有'完全控制'。使用WinHttpClients會自動將NLTMAuthentication標頭添加到請求。我已要求管理員自己嘗試請求,但我沒有收到回覆。 –

+0

這個問題突然解決了,我沒有采取任何行動。上面的代碼可以像廣告一樣工作。 –

相關問題