2015-04-27 28 views
2

獲取取消授權execption同時連接到共享點REST Web服務:的SharePoint REST服務401沒有找到

URL myURL = new URL("http://test:2014/PWA/_api/ProjectData/Projects"); 
      URLConnection uc = myURL.openConnection(); 
      HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection(); 
      String userCredentials = "admin:pasword"; 
      String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary("password".getBytes()); 
      uc.setRequestProperty ("Authorization", basicAuth); 
      InputStream in = uc.getInputStream(); 

獲得以下錯誤,同時從URL讀

java.io.IOException: Server returned HTTP response code: 401 for URL: http://test:2014/PWA/_api/ProjectData/Projects 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at com.jw.sharepoint.examples.XMLParser.getDocumentFromUrl(XMLParser.java:127) 
    at com.jw.sharepoint.examples.XMLParser.main(XMLParser.java:27) 
java.lang.NullPointerException 
    at com.jw.sharepoint.examples.XMLParser.main(XMLParser.java:29) 
+0

401不是'404 - 找不到',而是'未經授權的! – Alexander

+0

@Alexander它使用相同的憑據爲瀏覽器工作,但沒有與java說未經授權的工作。 –

+1

然後您的授權碼可能會被破壞。你確定'String basicAuth =「Basic」+ javax.xml.bind.DatatypeConverter.printBase64Binary(「password」.getBytes()); uc.setRequestProperty(「Authorization」,basicAuth);'做你想做的事情? – Alexander

回答

0

添加請求財產和請求的方法解決了問題。

InputStream getAuthenticatedResponse(final String urlStr, final String domain,final String userName, final String password) throws IOException { 


      Authenticator.setDefault(new Authenticator() { 

       @Override 
       public PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(
         domain + "\\" + userName, password.toCharArray()); 
       } 
      }); 

      URL urlRequest = new URL(urlStr); 
      HttpURLConnection conn = (HttpURLConnection) urlRequest.openConnection(); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setRequestMethod("GET"); 
      conn.setRequestProperty("Accept", "*/*"); 
      return conn.getInputStream(); 

     }