首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dropbox -应用程序文件夹删除-获取NSURLErrorRequestBodyStreamExhausted错误- iOS

Dropbox -应用程序文件夹删除-获取NSURLErrorRequestBodyStreamExhausted错误- iOS
EN

Stack Overflow用户
提问于 2013-03-26 12:45:36
回答 1查看 1.5K关注 0票数 2

我正在使用Core将dropbox与iOS应用程序集成。我能够认证一个帐户,并成功上传文件。

但是如果经过认证,用户可以从dropbox帐户中删除应用程序文件夹,或者通过dropbox设置卸载应用程序。

之后,如果我试图上传一个文件,整个文件就会被上传(进度从0到1),然后收到一个错误,错误代码-1021对应于NSURLErrorRequestBodyStreamExhausted,nor错误代码401根据https://www.dropbox.com/developers/core/api中的标准API错误。

问题是,这种情况发生在使用iOS 6的设备上,甚至帐户本身也没有断开链接。我有一个带有iOS 5的设备,它获取401的错误代码(但在上传完整个文件之后也是如此),这就是验证错误(错误代码401),正如核心api文档中所解释的那样。而帐户本身就没有链接了。

更新:这个错误已经在最新的dropbox构建中解决了。

EN

回答 1

Stack Overflow用户

发布于 2013-04-14 23:29:51

当您的应用程序启动时,以下代码将立即请求用户Dropbox帐户信息(如果他们当前链接的话)。如果用户删除“应用程序”文件夹,或从Dropbox.com中撤销对应用程序的访问,则在启动应用程序时,用户将立即断开链接。我认为这是一个很好的实践,不管SDK是否有错误,在上传文件时不能返回401。

将此添加到您的应用程序委托didFinishLaunchingWithOptions**method中,在其中初始化Dropbox**

代码语言:javascript
运行
复制
DBSession* dbSession = [[[DBSession alloc] initWithAppKey:DROPBOX_KEY appSecret:DROPBOX_SECRET root:kDBRootAppFolder] autorelease];
[DBSession setSharedSession:dbSession];
if ([[DBSession sharedSession] isLinked]) {
    DBRestClient* dbRestClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
    [dbRestClient setDelegate:self];
    [dbRestClient loadAccountInfo];
}

然后将以下方法添加到应用程序委托

代码语言:javascript
运行
复制
- (void)restClient:(DBRestClient*)client loadAccountInfoFailedWithError:(NSError*)error {
    if (error.code == 401) {
        [[DBSession sharedSession] unlinkAll];
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15637418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档