2012-05-29 63 views
1

我遇到了问题NSURLConnectionNSURLConnection无法在设备上工作

我将请求发送到使用服务器:

[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

,但我得到一个“连接超时”的错误。

如果我使用Wi-Fi连接,它工作得很好。我的手机上有一个完整的3G网络,可以以相当快的速度访问其他应用和网站。

我不明白为什么我的请求没有被发送到服务器。

请帮忙。

我只是想:

[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES ]; 

但这不是工作要么。

回答

1

是否有使用NSURLConnection的任何具体的原因,

我有类似的问题,并能够利用的NSURLRequest的参考下

-(NSString *)sendFile:(NSString*)url File:(NSString*)pFileName Handler:(NSObject*) sender{ 


    NSString *base64Data = [AppUtil compressAnd64EncodedString:pFileName]; 

    NSMutableString* requestURL = [[NSMutableString alloc] init]; 
    [requestURL appendString:url]; 

    NSMutableString* requestBody = [[NSMutableString alloc] init]; 
    [requestBody appendString:@"request="]; 
    [requestBody appendString:@""]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: [NSString stringWithString:requestURL]]]; 

    // assume we are going to have data of 100 kb 
    NSMutableString *pRequestBody = [[NSMutableString alloc]initWithCapacity:100*1024]; 

    // append 
    [pRequestBody appendString:SOAP_START_PACKET]; 

    [pRequestBody appendString:base64Data]; 

    [pRequestBody appendString:SOAP_END_PACKET]; 

    [request setHTTPMethod: @"POST"]; 
    [request setValue:@"application/soap+xml" forHTTPHeaderField:@"content-type"]; 
    [request setValue:@"utf-8" forHTTPHeaderField:@"charset"]; 

    NSData *requestData = [NSData dataWithBytes: [pRequestBody UTF8String] length: [pRequestBody length]]; 

    [request setHTTPBody: requestData]; 

    [request setTimeoutInterval:HTTP_TIME_OUT]; 

    NSError  *error = nil; 
    NSURLResponse *response = nil; 

    debugLog<<" sending request "<<endl; 

    NSData *pData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

    if(pData){ 
     NSString *pRespString = [[[NSString alloc] initWithData:pData 
                 encoding:NSUTF8StringEncoding] autorelease]; 

     debugLog<<"Response of length = "<<(int)[pRespString length]<<endl; 

     // write file depending upon the response 
     NSString *pAppFileName = [self parseAndGenerateFile:pRespString]; 

     // done with the data 
     // [pData release]; 

     if(!pAppFileName){ 

      [self setErrorString:@"Server Error"]; 

      return nil; 

     } 

     return pAppFileName; 


    }else{ 
     debugLog<<" data is NULL"<<endl; 

     NSString *pErrorMessage = [error localizedDescription]; 

     [self setErrorString:pErrorMessage]; 

     /* Must be the Network error, lets show it to the user */ 

    } 
    return nil; 




} 
代码
相关问题