请求超时并且找不到指定的服务器

时间:2011-05-05 13:54:20

标签: iphone objective-c ios nsurlconnection cllocationmanager

我看到这个有线问题,当我启动我的应用程序时,我得到连续(4-5次)错误消息,有时它说

  1. “由于呼叫当前处于活动状态,因此无法建立数据连接”没有当前通话

  2. 请求超时

  3. 找不到具有指定主机名的服务器。

  4. 当您单击“确定”时,错误消息会消失几次,应用程序也可以正常运行。

    当应用程序启动时,我正在做两件事,我开始使用CLLocationManager更新当前位置,一旦我获得了使用NSURLConnection进行两次异步调用的位置,我看到我的NSURLConnection委托方法中的didFailWithError方法被调用, 所有的信息都来自那里,所以我想弄清楚的是

    1. 为什么会这样,我的服务器很好我有正确的互联网连接(我在wifi上而不是手机数据)
    2. 为什么会这么多次,我只会发出两个请求。
    3. 它开始表现不好。我想知道它是否需要一些热身时间或类似的东西。我想显示错误消息,但并非所有这些都可能是好的,即使没有数据连接,显示这么多次会惹恼用户。

      这是我的didFailWithError中的代码。

       UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                           message:[NSString stringWithFormat:@"Error code is %d", [error code]]
                                                          delegate:nil
                                                 cancelButtonTitle:@"OK"
                                                 otherButtonTitles:nil];
        [alertView show];
        [alertView release];
      

      还有一个问题,我如何打印实际的错误消息,而不是这个神秘的错误代码。

      感谢您帮助我。

      用于建立连接的

      [EDIT]代码

          NSURL *getURL = [NSURL URLWithString: urlString];   
      
          NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
      
      //add our HTTP headers and URL
      [request setValue: @ "plain/text" forHTTPHeaderField : @"Content-Type"];
      [request setHTTPMethod:@"GET"];
      [request setURL : getURL];
      
      NSURLConnection* urlConnection =
         [[[NSURLConnection alloc] initWithRequest:request 
                                          delegate:delegate  
                                  startImmediately:YES] autorelease];
      

      Yogesh

3 个答案:

答案 0 :(得分:1)

您可以使用以下行打印实际的错误消息:

-(void) connection:(NSURLConnection *) connection didFailWithError:(NSError *) error {
     NSLog(@"localizedDescription%@", [error localizedDescription]);
}

您必须在NSURLConnection

的任何地方实施上述方法

我是Stack Overflow的新手。因此,如果在回答上述问题时没有遵循任何规则/习惯,请指出。

答案 1 :(得分:1)

我找到了答案,实际上我有signficantLocationChange的东西,而且发生的事情是当应用程序因signficantLocationChange而醒来时,应用程序假设要进行服务器调用以获取一些信息,而且发生的情况是当应用程序唤醒时,会出现没有可用数据连接的情况,因此所有错误都会被填满,当用户打开应用程序时,他会看到所有这些错误。

答案 2 :(得分:0)

立即删除Content-Type: text/plain请求标头。除非您提交POST数据,否则请求没有内容类型。并且GET请求不应包含POST数据。