1

我是 iOS 编程新手,想在我正在设计的 iPad 应用程序中显示股票报价和股票详细信息。我在看两个选项 我在看谷歌金融或雅虎金融。

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

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

4

2 回答 2

2

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

我研究了如何使用 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,因此您应该更改请求以反映这一点。

于 2012-05-09T19:06:39.473 回答
0

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

干杯,马丁

于 2012-07-03T19:36:50.833 回答