【问题标题】:Downloading Stock quotes to App将股票报价下载到应用程序
【发布时间】:2012-05-09 19:00:03
【问题描述】:
我是 iOS 编程新手,想在我正在设计的 iPad 应用程序中显示股票报价和股票详细信息。我在看两个选项我在看谷歌金融或雅虎金融。
我将如何向他们的网站发送 url 请求,然后在 Xcode 中处理回复?
我看到 yahoo 有 YQL 服务,但我无法理解如何让它工作,尽管在线阅读了一些 yahoo 文档,所以我希望避免它。我已经查看了 google api,但我不知道如何集成它并让它请求库存详细信息。我决定通过 url 请求路由并尝试编写一些基本代码来处理来自 url 请求的回复,因为这似乎是最简单的选择(虽然我不知道在搜索股票时这将如何工作) .
【问题讨论】:
标签:
xcode
ipad
yahoo-finance
stockquotes
google-finance
【解决方案1】:
刚刚删除了我的整个答案并重写了它以避免混淆:
我研究了如何使用 YQL 查询 yahoo Finance API,结果如下:
这里是完整的代码来完整地制定请求字符串。您可以将它直接扔到 NSMutableURLRequest 的 NSURL 中,并会得到一个 json 响应。此代码将获取每个代码的每个属性。要更改此设置,您需要在前缀 (select%20*%20) 的该位中指定单个属性而不是 *。
我从this post 中的示例代码中提取了一部分。我修改了代码以适应异步请求(也稍微更改了它,因为它的一部分似乎已经过时并且无法正常工作。
#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];
使用this answer查看如何制定请求并使用返回的json。
基本上你需要改变的部分是
NSURL *url = [NSURL URLWithString:queryURL];
您也没有发送 JSON,因此您应该更改请求以反映这一点。