NSURL要求?注册和登录

时间:2012-11-12 08:31:46

标签: ios nsurlconnection

这是我的代码:

//login method
- (int) authenticateClient {
NSString *loginWeb = [NSString stringWithFormat:(@"http://192.168.118.1/login.php?uname=%@&pass=%@&submit=Log%%20In"), user, pass];
NSURL *login = [NSURL URLWithString:loginWeb];
NSData *loginData = [NSData dataWithContentsOfURL: login];
NSString *result = [[NSString alloc] initWithData:loginData encoding:NSUTF8StringEncoding];
NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] init];
[loginRequest setURL:login];
[loginRequest setTimeoutInterval:1];

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:loginRequest delegate:self startImmediately:YES];
[connection start];
   return [result integerValue];
}

我的问题是,当模拟没有网络连接时,我的应用程序冻结并且在指定的时间间隔内没有加载或超时(1秒钟只是为了查看它是否有效)。

我读了一些关于开始立即强迫进行当前威胁的事情,导致其他所有事情发生在"暂停"直到行动完成。

我有两个问题:

1。)让URL基本上在后台运行而不是暂停所有内容的更好方法是什么?

2.。)如何获得实际有效的超时方法?

非常感谢!谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,超时一秒真的很低。如果要模拟不同的网络条件,可以使用this之类的内容。你不需要这种舞蹈:

NSData *loginData = [NSData dataWithContentsOfURL: login];
NSString *result = [[NSString alloc] initWithData:loginData encoding:NSUTF8StringEncoding];

你也不需要这个,因为连接已经开始了:

[connection start];

同样来自documentation

  

NSURLConnection的委托方法 - 由。定义   NSURLConnectionDelegate协议协议 - 允许对象接收   有关URL请求的异步加载的信息回调。   其他委托方法提供允许委托的设施   自定义执行异步URL加载的过程。这些   委托方法在启动的线程上调用   相关NSURLConnection对象的异步加载操作。

所以对于你的问题:

  • 实施NSURLConnection’s代理
  • 检查this& this