刚刚删除了我的整个答案并重写了它以避免混淆:
我研究了如何使用 YQL 来查询 yahoo Finance API,这就是我最终得到的结果:
这是完整的代码来完全制定请求字符串。您可以将它直接扔到 NSMutableURLRequest 的 NSURL 中,并会得到一个 json 响应。此代码将获取每个代码的每个属性。要更改此设置,您需要在前缀 (select%20*%20) 的此位中指定单个属性而不是 *。我从这篇文章的示例代码中提取了一部分。我修改了代码以适应异步请求(也稍微更改了它,因为它的一部分似乎已经过时并且无法正常工作。
#define QUOTE_QUERY_PREFIX @"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20("
#define QUOTE_QUERY_SUFFIX @")%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json"
+ (NSString *)formulateYQLRequestFor:(NSArray *)tickers
{
NSMutableString *query = [[NSMutableString alloc] init];
[query appendString:QUOTE_QUERY_PREFIX];
for (int i = 0; i < [tickers count]; i++)
{
NSString *ticker = [tickers objectAtIndex:i];
[query appendFormat:@"%%22%@%%22", ticker];
if (i != [tickers count] - 1)
{
[query appendString:@"%2C"];
}
}
[query appendString:QUOTE_QUERY_SUFFIX];
return query;
}
您可以通过执行以下操作来调用它:
NSArray *tickerArray = [[NSArray alloc] initWithObjects:@"AAPL", @"VZ", nil];
NSString *queryURL = [MyClass formulateYQLRequestFor:tickerArray];
使用此答案查看如何制定请求并使用返回的 json。本质上,您需要更改的部分是
NSURL *url = [NSURL URLWithString:queryURL];
您也没有发送 JSON,因此您应该更改请求以反映这一点。