2011-04-02 98 views
0

嘿家伙,所以我非常新的Objective-C领域,甚至更新的编程网络连接体育场。我正在尝试使用RSS阅读器应用程序,并且已经能够设置一个像样的NSXMLParser等解析XML提要。然后我想添加绑定到Google阅读器的功能。我可以连接,验证,然后从页面请求,但它返回的是我的连接是直接的HTML代码的网站,而不是像我希望的饲料的XML ...我的问题是如何获得来自Google阅读器Feed的XML数据?这里是我的代码:分析谷歌阅读器数据

NSMutableURLRequest* request=[NSMutableURLRequest requestWithURL:URL]; 

[request setValue:[authCodes objectForKey:@"Auth"] forHTTPHeaderField:@"Auth"]; 
[request setValue:[authCodes objectForKey:@"SID"] forHTTPHeaderField:@"SID"]; 
//[request setHTTPMethod:@"GET"]; 

NSURLConnection* conn=[NSURLConnection connectionWithRequest:request delegate:self]; 

[conn start]; 

,然后将两个委托方法:

-(void)connection: (NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
if (connectionData==nil) { 
     connectionData=[[NSMutableData alloc] init ]; 
    } 
    NSLog(@"CONNECTION"); 
    [connectionData appendData:data]; 

} 

-(void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"Connection Closed"); 

    NSString *tempString = [[NSString alloc] initWithData:connectionData encoding:NSASCIIStringEncoding]; 
    NSLog(@"The Data is Equal To: %@", tempString); 

    rssParser=[[NSXMLParser alloc] initWithData:connectionData]; 

    [rssParser setDelegate:self]; 
    [rssParser setShouldProcessNamespaces:YES]; 
    [rssParser setShouldReportNamespacePrefixes:YES]; 
    [rssParser setShouldResolveExternalEntities:NO]; 

    [rssParser parse]; 

} 

然后它的推移和解析,显然是给我一个错误说,它不知道如何解析它。 (错误代码76)

这是我试图连接到的网址: http://www.google.com/reader/view/feed/http%3A%2F%2Fnews.cnet.com%2F2547-1_3-0-20.xml

这里才是它打印出的数据收到......只是在开玩笑,当我把它放在那里Stack Overflow将其解析为HTML并将其显示为这样...

我知道这不是验证错误,并且确实难以确定从哪里获取提要。我从错误的URL获取?如果我知道它不是解析器,因为它解析了很好的cnet的原始提要,以及其它任何直接来自他们网站的提要。

回答

1

NSURLConnection将向所提供的URL发送请求并下载存储在那里的任何数据。当您在网络浏览器中输入http://www.google.com/reader/view/feed/http://news.cnet.com/2547-1_3-0-20.xml时,您会看到它会将您带到Google阅读器网站(HTML),而不是您可以直接解析的XML Feed。

我不确定您从哪里生成您的网址。如果您知道XML提要本身的网址,则应直接使用该提要。看起来Google Reader网址的格式为http://www.google.com/reader/view/feed/[feed_url]。因此,如果您已有Google阅读器网址,则可以提取Feed网址并将其用于您的请求。

如果由于某种原因您绝对需要通过Google,您可以下载HTML并解析它以找到_INPUT_STREAM_ID。这包含从中下载XML的URL,然后您可以发出第二个请求。

+0

好的互动,这是有道理的,谢谢。我想绑定到谷歌阅读器的原因是它是所有提要的缓存,并拉起旧的条目。那可能吗? – utahwithak 2011-04-02 15:56:06

+0

不幸的是,我没有办法,我知道,访问缓存。 – 2011-04-02 16:20:27

0

对于那些寻求实现这一点,仍在寻找这里是我发现解决这个问题。

首先,你必须连接到谷歌,然后得到一个令牌,然后与网站交互google.com/reader/api/0/...

这里要说的是,我发现非常有帮助的网站:

http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI

它概述了关键字,以及如何与Google阅读器