Objective c 使用NSURLRequest的stringWithContentsOfURL的等效代码是什么?

Objective c 使用NSURLRequest的stringWithContentsOfURL的等效代码是什么?,objective-c,networking,timeout,nsurlconnection,nsurlrequest,Objective C,Networking,Timeout,Nsurlconnection,Nsurlrequest,但是,我在网上读到,如果我想添加一个超时,我可能应该使用一个NSURLRequest。第一个代码工作正常,但第二个代码总是返回@notnil,just。有人有什么建议吗 我还了解到,NSURLConnection可以处理任何类型的web压缩,而NSURLRequest不能处理这种情况,因此我认为最好选择更全面的解决方案。 谢谢你的好建议。代码今早神奇地工作了,所以我猜我的Web服务器昨晚出故障了。你试过检查错误了吗?如果连接出现问题,那么它可能有一个值。我建议您使用异步网络调用,而不是使用Se

但是,我在网上读到,如果我想添加一个超时,我可能应该使用一个NSURLRequest。第一个代码工作正常,但第二个代码总是返回@notnil,just。有人有什么建议吗

我还了解到,NSURLConnection可以处理任何类型的web压缩,而NSURLRequest不能处理这种情况,因此我认为最好选择更全面的解决方案。


谢谢你的好建议。代码今早神奇地工作了,所以我猜我的Web服务器昨晚出故障了。

你试过检查错误了吗?如果连接出现问题,那么它可能有一个值。我建议您使用异步网络调用,而不是使用SendSynchronousRequest。要编写的代码稍微多了一点,但它可以避免为避免锁定主线程而必须执行线程。作为奖励,它还可以取消请求。好主意,卢默,但我仍然想把它放在另一个线程中,因为我相信如果我不这样做,它仍然会在主线程中阻塞。异步网络调用永远不会阻塞主线程。他们被设计成不这样做。
NSURL *url = [NSURL URLWithString:escapedUrlString];
NSString *responseString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 
    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!");
    }