2012-05-09 26 views
1

我是iOS编程新手,想要在我设计的iPad应用程序中显示股票报价和股票详细信息。我正在寻找两个选择我在看谷歌财务或雅虎财务。正在下载股票报价至应用程序

我该如何去发送一个url请求到他们的网站,然后在Xcode中处理回复?

我看到雅虎有一个YQL服务,但我无法将我的头围绕如何让它工作,尽管在网上阅读了一些雅虎文档,所以我希望避免它。我曾看过谷歌API,但我不知道如何整合它,并得到它要求的股票细节。我已经决定通过url请求路由并尝试组成一些基本代码来处理来自url请求的回复,因为这看起来像是最简单的选项(尽管我不知道在搜索股票时这将如何工作) 。

回答

2

只是删除了我的全部答案,并重写了它,以避免混淆:

我看着如何使用YQL查询雅虎财经API和这里就是我结束了:

下面是完整的代码充分制定请求字符串。你可以直接将这个引入到一个NSMutableURLRequest的NSURL中,并且会得到一个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,因此您应该更改请求以反映该问题。