从网站获取数据时出错
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
}
}];
你好所以我想从这个网站检索数据: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
}
}];