从网站获取数据时出错

Error fetching data from website

你好所以我想从这个网站检索数据:http://www.timeapi.org/utc/now 用于我正在制作的应用程序,但是当我使用以下代码发出请求时,我总是得到空值:

NSURL * timeAPI = [[NSURL alloc]initWithString:@"http://www.timeapi.org/utc/now"];

NSURLRequest * urlRequest = [[NSURLRequest alloc]initWithURL:timeAPI];

__block NSData * responseData;

[NSURLConnection sendAsynchronousRequest:urlRequest queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    if(connectionError)
    {
        NSLog(@"error fetching data");
    }
    else{
        responseData = [[NSData alloc]initWithData:data];
    }
}];

NSError* error = nil;
NSLog(@"%@, erorr:", responseData);

谁能解决这个问题?

请求需要时间,在您的日志语句中,数据尚未到达。在else子句中放一条responseData的日志,就是有数据的时候你就会看到。

您不需要(或不想)__block 声明。
[[NSData alloc]initWithData:data]不需要,直接用initWithData:data

示例代码:

NSURL * timeAPI = [NSURL URLWithString:@"http://www.timeapi.org/utc/now"];
NSURLRequest * urlRequest = [[NSURLRequest alloc] initWithURL:timeAPI];

[NSURLConnection sendAsynchronousRequest:urlRequest queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    if(connectionError) {
        NSLog(@"error fetching data: %@", connectionError);
    }
    else {
        NSLog(@"data: %@", data);

        NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"dataString: %@", dataString);

        // Do something with the data
    }
}];