嘿伙计们,所以我对Objective-C领域非常陌生,甚至对编程互联网连接的体育场也更新。我正在尝试使用RSS阅读器应用程序,并且能够设置一个像样的NSXMLParser,以解析XML提要。然后,我想添加与Google阅读器绑定的功能。我可以连接,验证然后从页面请求,但它在我的连接上返回的是网站的直接html代码,而不是像我希望的那样的Feed的XML ...我的问题是如何获得谷歌阅读器提要的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并将其显示为...
我知道这不是一个身份验证错误,我真的很难知道从哪里获取Feed。我是从错误的网址获取的吗?如果我知道它不是解析器,因为它解析了很好的cnet的原始feed,以及其他任何直接来自他们的站点。
答案 0 :(得分: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 Feed本身的URL,则应该直接使用它。看起来Google阅读器网址的格式为http://www.google.com/reader/view/feed/[feed_url]。因此,如果您已经拥有Google阅读器网址,则可以提取Feed网址并将其用于您的请求。
如果由于某种原因你绝对需要通过谷歌,你可以下载HTML并解析它以找到_INPUT_STREAM_ID。这包含从中下载XML的URL,然后您可以再次发出请求。
答案 1 :(得分:0)
对于那些正在寻求实现这一点但仍在寻找这些的人,我发现了解决这个问题。
首先你必须连接谷歌,然后获得一个令牌,然后与网站互动google.com/reader/api/0 /...
这是我发现非常有帮助的网站:
http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI
概述了关键字以及如何与googlereader进行互动