将股票报价下载到App

时间:2012-05-09 19:00:03

标签: xcode ipad yahoo-finance stockquotes google-finance

我是iOS编程的新手,想要在我正在设计的iPad应用中显示股票报价和股票详细信息。我正在寻找两种选择,我正在关注谷歌金融或雅虎财经。

我如何向他们的网站发送网址请求,然后在Xcode中处理回复?

我看到雅虎有一个YQL服务,但我无法解决如何让它工作,尽管在线阅读一些雅虎文档,所以我希望避免它。我看过谷歌api但我无法弄清楚如何整合它并让它来请求股票详细信息。我已经决定通过url请求路由并尝试编写一些基本代码来处理来自url请求的回复,因为这似乎是最简单的选项(虽然我不知道这在搜索股票时会如何工作)

2 个答案:

答案 0 :(得分:2)

刚刚删除了我的整个答案并重新编写以避免混淆:

我研究了如何使用YQL查询yahoo finance API,这是我最终得到的结果:

以下是完整制定请求字符串的完整代码。你可以将它直接扔到NSURL中以获取NSMutableURLRequest,并获得json响应。此代码将获取每个股票代码的每个属性。要更改此设置,您需要指定单个属性,而不是前缀中此位中的*(选择%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,因此您应该更改请求以反映该内容。

答案 1 :(得分:0)

我的ScriptScraper工具做了类似的事情,它将股票加载到Excel表格中。

欢呼声, 马丁