使用NSURLRequest的stringWithContentsOfURL的等价代码是什么?

时间:2010-10-26 03:41:03

标签: objective-c networking timeout nsurlconnection nsurlrequest

NSURL *url = [NSURL URLWithString:escapedUrlString];
NSString *responseString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 

但是,我在网上看到,如果我想添加超时,我应该使用NSURLRequest。第一个代码工作正常,但第二个代码总是返回@“”(不是nil,只是“”)。有人有什么建议吗?

我还读到NSURLConnection处理可能会进行的任何类型的Web压缩,而NSURLRequest将无法处理,所以我认为我最好只选择更全面的解决方案。 http://lists.apple.com/archives/cocoa-dev/2009/Oct/msg01921.html

    NSString *escapedUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *responseString;
    NSURLResponse *response;
    NSError *error;

    NSURLRequest *request = [[NSMutableURLRequest alloc] 
                             initWithURL:[NSURL URLWithString:escapedUrlString]
                             cachePolicy:NSURLRequestUseProtocolCachePolicy
                             timeoutInterval:5]; // 5 second timeout?

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

    if(responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]){
        NSLog(@"Recieved String Result: %@", responseString);
    } else {
        NSLog(@"Response String is null!");
    }

1 个答案:

答案 0 :(得分:0)

感谢您提出的好建议。该代码今天早上神奇地工作,所以我猜我的网络服务器昨晚发生了故障。