通过Java客户端访问SharePoint Rest api,但出现403错误

通过Java客户端访问SharePoint Rest api,但出现403错误,java,rest,sharepoint,adal,Java,Rest,Sharepoint,Adal,我正试图访问如上所述的SP Rest API,但仍然得到403-禁止的错误。 我不确定这是否与我们使用的单一登录有关: 要通过浏览器访问RESTAPI,我必须登录https://login.microsoftonline.com然后我就可以拨打https://mycompany.sharepoint.com/_api/search/query?querytext=%27Search%20foo%20bar%27 因此,我的Java应用程序如下所示: CredentialsProvider

我正试图访问如上所述的SP Rest API,但仍然得到403-禁止的错误。 我不确定这是否与我们使用的单一登录有关: 要通过浏览器访问RESTAPI,我必须登录
https://login.microsoftonline.com
然后我就可以拨打
https://mycompany.sharepoint.com/_api/search/query?querytext=%27Search%20foo%20bar%27
因此,我的Java应用程序如下所示:

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(
            new AuthScope(AuthScope.ANY),
            new NTCredentials("username@mycompany.de", "password", "https://login.microsoftonline.com", "microsoftonline.com"));
    CloseableHttpClient httpclient = HttpClients.custom()
            .setDefaultCredentialsProvider(credsProvider)
            .build();
    try {
        HttpGet httpget = new HttpGet("https://mycompany.sharepoint.com/_api/search/query?querytext=%27Search%20foo%20bar%27");

        System.out.println("Executing request " + httpget.getRequestLine());
        CloseableHttpResponse response = httpclient.execute(httpget);
        try {
            System.out.println("----------------------------------------");
            System.out.println(response.getStatusLine());
            EntityUtils.consume(response.getEntity());
        } finally {
            response.close();
        }
    } finally {
        httpclient.close();
    }
这导致HTTP/1.1403被禁止。有什么想法吗

编辑: 我在所有标题中添加了print.out,因此我的完整输出为:

Executing request GET https://***.sharepoint.com/_api/search/query?querytext=%27Search%20foo%20OR%20bar%27 HTTP/1.1
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
----------------------------------------
HTTP/1.1 403 Forbidden
Cache-Control: private, max-age=0
Transfer-Encoding: chunked
Content-Type: application/xml;charset=utf-8
Expires: Mon, 15 Jun 2015 07:12:48 GMT
Last-Modified: Tue, 30 Jun 2015 07:12:48 GMT
Server: Microsoft-IIS/8.5
X-SharePointHealthScore: 0
X-Forms_Based_Auth_Required: https://***.sharepoint.com/_forms/default.aspx?ReturnUrl=/_layouts/15/error.aspx&Source=%2f_vti_bin%2fclient.svc%2fsearch%2fquery%3fquerytext%3d%2527Search%2520foo%2520OR%2520bar%2527
X-Forms_Based_Auth_Return_Url: https://***.sharepoint.com/_layouts/15/error.aspx
X-MSDAVEXT_Error: 917656; Zugriff+verweigert.+Zum+%c3%96ffnen+von+Dateien+an+diesem+Speicherort+m%c3%bcssen+Sie+zun%c3%a4chst+zur+Website+wechseln+und+die+Option+zur+automatischen+Anmeldung+aktivieren.
DATASERVICEVERSION: 3.0
X-AspNet-Version: 4.0.30319
X-IDCRL_AUTH_PARAMS_V1: IDCRL Type="BPOSIDCRL", EndPoint="/_vti_bin/idcrl.svc/", RootDomain="sharepoint.com", Policy="MBI"
SPRequestGuid: c757159d-a063-2000-20ed-499660c844ff
request-id: c757159d-a063-2000-20ed-499660c844ff
X-FRAME-OPTIONS: SAMEORIGIN
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 16.0.0.4121
X-Content-Type-Options: nosniff
X-MS-InvokeApp: 1; RequireReadOnly
P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
Date: Tue, 30 Jun 2015 07:12:47 GMT

我试图将
X-MSDAVEXT_错误
翻译成英文:
权限被拒绝。要从此位置访问数据,您必须切换到网站并启用自动登录选项。

看起来您正在使用Office 365。我在尝试使用某些帐户时遇到过此问题。我想看看ADAL库,它们用于对Azure AD(您作为O365的一部分)执行身份验证。

您从
403
响应中得到了什么消息?关于安全验证的事吗?@Daniel B看我的编辑是的,我用的是O365。感谢您提到ADAL,但我真的不知道如何在我的HttpGet请求中使用身份验证示例(我认为是)。也许有人能解释一下?