2017-09-14 12 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は、サーバーがリソースにアクセスして要求を処理できるが、アクセス許可のためにそれ以上のアクションを実行することを拒否することを意味します。以下の説明をご覧ください。

例:サポートの場合、管理者はプロジェクトで定義された2つのロールであり、管理者のみが新しいリソースを作成する権限を持ちます。

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

、要求がサーブ、ユーザー「サポート」によって行われている場合は、ユーザー「サポート」を認証できますが、ユーザが「管理者」の権限を持っていないとして、403で拒否します。

正当なユーザーに認証ヘッダーを追加し、問題が解決するかどうかを確認してください。

+0

返事ありがとうございますが、上記のように、私はすでに適切な権限を持っているべきです - 管理者によると、私はフルコントロールを持っています。 WinHttpClientsを使用すると、要求にNLTMAuthenticationヘッダーが自動的に追加されます。私は管理者に依頼してもらうよう依頼したが、私は聞いたことがない。 –

+0

問題は私のところでは何の対策もなく突然解決しました。上のコードは広告された通りに動作します。 –

関連する問題