我正在尝试从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行?
答案 0 :(得分:1)
看起来您将所有这些代码放在一个位置(进行同步网络请求)。这通常是一个坏主意。您应该将第一部分(创建和启动请求)放在一个位置,并将解析代码放在一个单独的方法/块中,一旦请求完成就会调用它。 (这称为异步网络请求。)
你应该看看+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]
。您可以在此处传递NSURLRequest,然后在完成处理程序中指定完成(解析等)。它将为您提供您正在寻找的NSData对象 - see documentation here。
如果您拥有多个网络连接,这可能会变得难以处理。您可能希望查看像AFNetworking这样的第三方库,它可以为您管理大量繁琐的工作,并让您专注于调用URL并解析响应。
答案 1 :(得分:0)
你需要:
NSData *myData = [NSURLConnection sendSynchronousRequest:myURL returningResponse:nil error:nil];
这是同步通话。我建议总是使用异步网络连接是一种好方法。