2012-06-01 66 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

相關問題