我正在尝试从 API 获取数据,我有以下代码:
// create the URL we'd like to query
NSString *urlString = [NSString stringWithFormat:@"https://www.googleapis.com/adsense/v1.1/reports"];
NSString *token = auth.accessToken;
NSMutableURLRequest *myURL = [NSURL URLWithString:urlString];
[myURL addValue:token forHTTPHeaderField:@"Authentication"];
// we'll receive raw data so we'll create an NSData Object with it
@@@@@@
How would I complete this step? So far I have
NSData *myData =
@@@@@@
// now we'll parse our data using NSJSONSerialization
id myJSON = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:nil];
// typecast an array and list its contents
NSArray *jsonArray = (NSArray *)myJSON;
NSLog(@"%@", jsonArray);
如何转乘9号线?
看起来您将所有这些代码放在一个地方(发出同步网络请求)。 这通常是一个坏主意。 您应该将第一部分(创建和启动请求)放在一个位置,并将解析代码放在一个单独的方法/块中,请求完成后将调用该方法/块。 (这称为异步网络请求。)
你应该看看
+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]
。 你可以在这里传递你的 NSURLRequest ,然后在完成处理程序中指定完成(解析等)。 它将为您提供您正在寻找的 NSData 对象 - 请参阅此处的文档。
如果您有多个网络连接,这可能会变得很麻烦。 您可能需要查看像 AFNetworking 这样的第三方库,它可以为您管理许多繁琐的事情,让您专注于调用 URL 并解析响应。
您需要:
NSData *myData = [NSURLConnection sendSynchronousRequest:myURL returningResponse:nil error:nil];
这是同步调用。我建议始终使用异步网络调用是一个好方法。