cocoa - NSDictionary DictionaryWithContentsOfURL 超时?

标签 cocoa httpwebrequest timeout nsurl

我编写了一个简单的代码来从网络服务器获取字符串值,现在我想设置超时,例如,执行 getData 10 秒,然后如果服务器在 10 秒后没有响应,则取消获取数据并执行“noConnect”。知道我该怎么做吗?

-(void)getData {
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:
@"http://exaple.com/example.plist"]];
NSDictionary *data = [NSDictionary dictionaryWithContentsOfURL:url];
NSString *aKey  = [chamUpdateData objectForKey:@"count"];
}
-(void)noConnect{}

最佳答案

您可以将对 dictionaryWith... 的调用包装在 NSOperation 中为了异步执行它;然后启动一个 NSTimer 以便它触发,您可以检查 NSOperation 的状态;如果它仍在运行,那么您可以取消它。

请记住,一旦您发送了网络请求,据我所知,没有办法真正停止该请求。因此,当连接时间超过该时间时,您只需设置一个超时来管理这种情况。如果响应在 1 分钟内到达,您将忽略该数据。

关于cocoa - NSDictionary DictionaryWithContentsOfURL 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6938779/

相关文章:

objective-c - 为什么此代码不符合 KVO 标准?

c# - C#无法查看有关API响应的错误,仅抛出异常以尝试/捕获

c# - httpwebrequest getresponse() 不返回任何内容,而 fiddler 显示内容

c# - 如何从 ASP.NET 获取网页的 HTML 内容

java - 移动设备上连接的适当超时是多少?

sql-server - ADO/SQL 服务器 : What is the error code for "timeout expired"?

php - 多次运行后 CURL 失败,显示 "could not establish connection"或 "connect() timed out"

cocoa - 添加到 NSStatusItem 按钮的 NSView 具有不透明边框

objective-c - 使用私有(private) dylib/framework 构建 Cocoa 应用程序包

xcode - 如何让 Xcode 不关心从自定义脚本 (/dev/null) 返回的错误?