【问题标题】:ASIHTTPREQUEST gives error (1) when iPhone is locked and unlocked当 iPhone 被锁定和解锁时,ASIHTTPREQUEST 给出错误 (1)
【发布时间】:2011-11-28 20:48:27
【问题描述】:

我正在使用 ASIHTTPREQUEST 在我的应用程序中进行异步网络连接。在大多数情况下,它工作得很好。但是,如果我正在运行连接并锁定手机(但让应用程序保持打开状态)并解锁它,我的连接会出现以下错误:

ErrorDomain=ASIHTTPREQUESTErrorDomain 代码=1 “操作无法完成。” (ASIHTTPREQUESTErrorDomain 错误 1。)

我怎样才能阻止这种情况发生,甚至在手机被锁定或屏幕关闭的情况下使 HTTP 请求继续工作?

【问题讨论】:

  • 你使用的是异步请求吗?
  • 是的——它是异步的。
  • 您的代理是否因锁定而被释放?如果是这样,那么您需要在 dealloc 控制器方法中释放请求。您可以记录下来看看是否发生了这种情况。
  • 不,代表还在。如果找到交易,那么我根本不会收到任何错误——它只会崩溃。由于委托仍然存在,我通过我的错误处理程序方法收到这些错误消息。
  • 你试过得到这样的错误吗?它说什么? NSError *error = [请求错误]; NSLog(@"错误原因 %@, 描述 %@", [错误本地化失败原因], [错误本地化描述]);我应该补充一点,我尝试使用普通 Web 服务器以及页面超时(故意)的 Web 服务器重现您的错误,但我无法重现您的错误。

标签: iphone ios cocoa-touch asihttprequest multitasking


【解决方案1】:

在发起请求之前用UIApplicationbeginBackgroundTaskWithExpirationHandler:方法启动一个后台任务。当请求返回成功或失败并且您已经处理了请求中的数据时,结束后台任务。

【讨论】:

  • 这只会将其创建为后台任务,对吗?我不希望它在默认情况下在后台运行,只有当用户真正让所有进入后台时。
  • 这就是该方法的作用。只要您的应用程序保持在前台,它就不会改变任何东西。但它确保当您的应用程序进入后台时任务有时间完成。从文档中:“您应该在未完成任务可能不利于您的应用程序用户体验的时候调用此方法。”
猜你喜欢
  • 2015-01-03
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多