2012-06-01 68 views
0

我有一个使用NSURLconnection的应用程序,当使用3G时出现错误“网络连接丢失”似乎一直无法与Web服务通信。但是,该应用程序运行无线网络很好。3g'网络连接丢失时NSURLconnection失败'

任何想法可能是什么问题?我需要使用NSURLconnection来处理3G吗?

我使用的一个NSURL代码示例。

 NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 
    if (conn) { 
     XMLData = [NSMutableData data];  
    } 

委托方法

-(void) connection:(NSURLConnection *) connection 
didReceiveResponse:(NSURLResponse *) response { 
    [XMLData setLength: 0]; 
} 

-(void) connection:(NSURLConnection *) connection 
didReceiveData:(NSData *) receiveddata { 
[XMLData appendData:receiveddata]; 
} 

-(void) connection:(NSURLConnection *) connection 
    didFailWithError:(NSError *) error { 
    self.errorLabel.text = [error localizedDescription]; 

} 

-(void) connectionDidFinishLoading:(NSURLConnection *) connection { 
    NSLog(@"DONE. Received Bytes: %d", [XMLData length]); 
    NSString *theXML = [[NSString alloc] 
        initWithBytes: [XMLData mutableBytes] 
        length:[XMLData length] 
        encoding:NSUTF8StringEncoding]; 

    //i do some xml parsing on the data returned 
    } 
+0

我们可以看到一些代码吗?你是否正确实施NSURLConnection?所有委托方法?你不需要任何特殊的处理3G连接 – self

+0

据我所知,我已经实施NSURLConnection的方式是正确的。正如我所说,它确实工作,显然不在3G上。 –

+0

@JesseDurham,请你说明你是如何解决上述问题的,因为我在3G网络中遇到同样的问题。在我的情况下,它总是运行超时,并给出错误“请求超时。”请帮我修复它。谢谢 – Meet

回答

1

我就开始把的NSLog在委托方法。从didReceiveData开始。

-(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) receiveddata   { 
      if (receiveddata != nil){ 
      [XMLData appendData:receiveddata]; 
      NSLog(@"didReceiveData :receiveddata is:%@", receiveddata); 

      } 
    else{ 
     NSLog(@"NO Data:%@"); 
     } 

    } 
+0

我发现了这个问题。这是我的一个愚蠢的错误,与NSURLConnection完全没有关系。 –

+0

好,根据我的代表方法是完美的,我会开始更深入地记录以找到问题以解决问题,很高兴您解决它! – self

+0

@JesseDurham你还记得错误是什么。我有同样的问题,只是无法弄清楚 – PowerMan2015

相关问题