2015-04-10 28 views
5

जावा अनुप्रयोग SharePoint के लिए SharePoint 2013 REST API लिए उपयोग की जरूरत https://msdn.microsoft.com/en-us/library/office/jj860569.aspxमूल प्रमाणीकरण 2013 REST API

बुनियादी प्रमाणीकरण का उपयोग करना पसंद करेंगे:

वेब पर बाकी एपीआई का उपयोग करने के कई उदाहरण हैं लेकिन प्रमाणीकरण से निपटने के लिए कोई भी प्रतीत नहीं होता है। शायद मैं यहाँ कुछ सचमुच सरल याद कर रहा हूँ।

यह डाकिया के माध्यम से मैन्युअल काम करता है: http://tech.bool.se/basic-rest-request-sharepoint-using-postman/ लेकिन मेरे ब्राउज़र में उपयोगकर्ता नाम और पासवर्ड दर्ज करने के लिए की आवश्यकता है।

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.4.1</version> 
</dependency> 

इस में परिणाम का उपयोग कर HttpClientBuilder basic auth -> चेतावनी::

मैं इस को लागू करने की कोशिश की है NTLM प्रमाणन त्रुटि: साख NTLM प्रमाणीकरण के लिए इस्तेमाल नहीं किया जा सकता: org.apache.http.auth.UsernamePasswordCredentials

+1

ऐसा लगता है कि NTLM प्रमाणीकरण की जरूरत है - > https://hc.apache.org/httpcomponents-client-ga/ntlm.html – fateddy

+0

@fateddy इस लिंक के लिंक के लिए धन्यवाद। –

उत्तर

6

धन्यवाद @fateddy जो चाल करता है: उपयोगकर्ता नाम पासवर्ड कैडेंशियल्स ("उपयोगकर्ता नाम", "पासवर्ड")) को स्विच करना याद रखें; एनटीसीएडेंशियल्स (,,,) के लिए;

इस maven dependency का उपयोग करना:

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.4.1</version> 
</dependency> 

SharePoint के लिए प्रमाणीकरण काम करता है:

public class SharePointClientAuthentication { 

public static void main(String[] args) throws Exception { 
    CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
    credsProvider.setCredentials(
      new AuthScope(AuthScope.ANY), 
      new NTCredentials("username", "password", "https://hostname", "domain")); 
    CloseableHttpClient httpclient = HttpClients.custom() 
      .setDefaultCredentialsProvider(credsProvider) 
      .build(); 
    try { 
     HttpGet httpget = new HttpGet("http://hostname/_api/web/lists"); 

     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.1 200 ठीक

+1

मैं अपने समाधान की कोशिश की SP2013 खोजें endpoint के साथ अपने जावा सेवा प्रमाणित करने के लिए लेकिन मैं अभी भी यह त्रुटि प्राप्त: "SafeQueryPropertiesTemplateUrl \" सा feQueryPropertiesTemplateUrl " {0} " एक मान्य URL नहीं है \ "एक मान्य URL नहीं है।। " –

+0

क्या आप इसे काम कर रहे थे? मैंने कोड फिर से चलाया और इसे जाने के लिए अच्छा होना चाहिए। क्या कोई और सत्यापित कर सकता है? –

+1

हाँ यह आखिरकार काम करता है। मैं WinHttpClients.createDefault() का उपयोग करता हूं। लेकिन स्थापना के साथ कुछ समस्याएं भी थीं और मैं उन सभी चीजों को नहीं जानता जो आईटी लोगों ने किया है! –