NSURL 无法在设备上工作



我对NSURLConnection有问题。

我使用以下方法向服务器发送请求:

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

但是我收到"连接超时"错误。

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

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

请帮忙。

我刚刚尝试过:

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

但这也不起作用。

使用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;


}

最新更新