我在将文件上传到Android中的OneDrive商业帐户时遇到问题。
我正在使用此处描述的上传API(简单且可恢复,对我来说都不起作用): https://dev.onedrive.com/items/upload.htm
其他一切都很好。我可以浏览,创建文件夹,删除,重命名,下载文件。我对常规OneDrive使用相同的实现,并且没有问题。我还使用官方OneDrive Android应用程序进行了测试并上传了作品,因此它似乎不是我的OneDrive Office 365帐户的权限问题。
我正在使用Retrofit / OkHttp。
这是来自查询的日志:
OkHttp: --> PUT https://<tenantname>-my.sharepoint.com/_api/v2.0/drive/items/root:/pricelist.pdf:/content HTTP/1.1
OkHttp: Content-Type: application/pdf
OkHttp: --> END PUT
OkHttp: <-- 500 Internal Server Error https://<tenantname>-my.sharepoint.com/_api/v2.0/drive/items/root:/pricelist.pdf:/content (831ms)
OkHttp: Cache-Control: private, max-age=0
OkHttp: Transfer-Encoding: chunked
OkHttp: Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8
OkHttp: Expires: Mon, 01 Feb 2016 22:09:26 GMT
OkHttp: Last-Modified: Tue, 16 Feb 2016 22:09:26 GMT
OkHttp: Server: Microsoft-IIS/8.5
OkHttp: X-SharePointHealthScore: 0
OkHttp: X-SP-SERVERSTATE: ReadOnly=0
OkHttp: ODATA-VERSION: 4.0
OkHttp: SPClientServiceRequestDuration: 92
OkHttp: X-AspNet-Version: 4.0.30319
OkHttp: SPRequestGuid: e5e45f9d-80fa-3000-9580-b34e009cc4be
OkHttp: request-id: e5e45f9d-80fa-3000-9580-b34e009cc4be
OkHttp: Strict-Transport-Security: max-age=31536000
OkHttp: X-FRAME-OPTIONS: SAMEORIGIN
OkHttp: X-Powered-By: ASP.NET
OkHttp: MicrosoftSharePointTeamServices: 16.0.0.4921
OkHttp: X-Content-Type-Options: nosniff
OkHttp: X-MS-InvokeApp: 1; RequireReadOnly
OkHttp: 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"
OkHttp: Date: Tue, 16 Feb 2016 22:09:25 GMT
OkHttp: OkHttp-Sent-Millis: 1455660569448
OkHttp: OkHttp-Received-Millis: 1455660570267
OkHttp: <-- END HTTP
TransferFileTask: Exception when transferring file
HttpException: OneDrive error: code = -1, System.IO.IOException, message = I/O error occurred.
发生的情况是,我总是得到一个500内部服务器错误,其错误体如上所示。如上所述,完全相同的上传代码适用于普通的OneDrive。
我尝试添加许多不同的标题,例如Content-Length,Host,Cache-Control等,但似乎没有任何区别。没有看到的是授权标题,它当然是正确的,适用于所有其他请求。
答案 0 :(得分:0)
原来这是由于缺少Content-Length标头造成的。这被误删了。 Regulear OneDrive显然并不关心并且运行良好,但OneDrive Business需要标题。