使用JAVA中的REST API将文件在线上传到Sharepoint

时间:2018-03-09 08:24:48

标签: java azure sharepoint sharepoint-online

我是sharepoint rest API的新手,在将文件(图片,文档,pdf等)上传到sharepoint时遇到了一些问题。提前谢谢。

以下是我们的要求。

  1. 用户将上传存储在应用服务器中特定位置的文档。

  2. cron作业将在应用程序服务器上运行,并根据业务需要将文档推送到在线共享点。

  3. 为实现这一目标,我们遵循以下步骤。

    1. 通过AZURE访问令牌完成身份验证(我们已使用客户端凭据流从AZURE AD获取访问令牌,并能够使用访问令牌与sahrepoint在线通信。)

    2. 我们已经使用了sharepoint在线REST API来进行上传,下载等文件操作。使用java代码。

    3. 在这里,我们可以从sharepoint在线下载文件,但是当我们上传文件时,我们得到的响应为“BAD REQUEST”,状态代码为“400”

      Sharepoint online rest API创建文件:

      url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Folder Name')/Files/add(url='a.txt',overwrite=true)
      method: POST
      body: "Contents of file"
      Headers: 
          Authorization: "Bearer " + accessToken
          X-RequestDigest: form digest value
          content-length:length of post body
      

      我的Java代码:

                  //Create HttpURLConnection
                  String token ="js#1ikssj......RDS2" // This is just sample
                  String request = "Create a File with raw string !!!";
                  java.net.URL url = new java.net.URL("http://site url/_api/web/GetFolderByServerRelativeUrl('/Folder Name')/Files/add(url='a.txt',overwrite=true)");
                  java.net.URLConnection connection = url.openConnection();
                  java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connection;
                  //Set Header
                  httpConn.setDoOutput(true);
                  httpConn.setDoInput(true);        
                  httpConn.setRequestMethod("POST");                                                  
                  httpConn.setRequestProperty("Authorization", "Bearer " +token);                                                                                       
                httpConn.setRequestProperty ("Accept", "application/json;odata=verbose");       
                  httpConn.setRequestProperty("binaryStringRequestBody", "true");                                                          
                  //Send Request
                  java.io.DataOutputStream wr = new java.io.DataOutputStream(httpConn.getOutputStream ());                                                   
                  wr.writeBytes(request);
                  wr.flush();
                  wr.close();
                    //Read the response.
                  String StatusMessage = "HTTP ResponseCode: " + httpConn.getResponseCode() + " "+  httpConn.getResponseMessage();            
      

      回复:400 - 不良请求。

1 个答案:

答案 0 :(得分:0)

您可以看一下该项目,在其中可以找到上载文件,创建文件夹,管理文件夹用户权限等的有效实现。与其他API的大多数常用操作相比,使用API​​非常容易

https://github.com/kikovalle/PLGSharepointRestAPI-java