NSMutableURLRequest和JSON - 我将如何完成此连接?

时间:2013-06-14 19:46:03

标签: ios objective-c json api nsmutableurlrequest

我正在尝试从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行?

2 个答案:

答案 0 :(得分:1)

看起来您将所有这些代码放在一个位置(进行同步网络请求)。这通常是一个坏主意。您应该将第一部分(创建和启动请求)放在一个位置,并将解析代码放在一个单独的方法/块中,一旦请求完成就会调用它。 (这称为异步网络请求。)

你应该看看+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]。您可以在此处传递NSURLRequest,然后在完成处理程序中指定完成(解析等)。它将为您提供您正在寻找的NSData对象 - see documentation here

如果您拥有多个网络连接,这可能会变得难以处理。您可能希望查看像AFNetworking这样的第三方库,它可以为您管理大量繁琐的工作,并让您专注于调用URL并解析响应。

答案 1 :(得分:0)

你需要:

NSData *myData = [NSURLConnection sendSynchronousRequest:myURL returningResponse:nil error:nil];

这是同步通话。我建议总是使用异步网络连接是一种好方法。