Анализ данных Google Reader

Привет, ребята, я новичок в области Objective-C и еще новичок в программировании интернет-соединений. Я пытаюсь работать над приложением для чтения RSS, и мне удалось настроить достойный NSXMLParser и тому подобное для анализа XML-каналов. Затем я хотел добавить возможность привязки к Google Reader. Я могу подключиться, аутентифицироваться, а затем запросить со страницы, но то, что он возвращает при моем подключении, - это прямой html-код для сайта, а не 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)

Это URL-адрес, к которому я пытаюсь подключиться: http://www.google.com/reader/view/feed/http%3A%2F%2Fnews.cnet.com%2F2547-1_3-0-20.xml

и вот то, что он распечатывает по мере получения данных ... шучу, когда я помещаю его туда. Stack Overflow проанализировал его как HTML и отобразил как таковой ...

Я знаю, что это не ошибка аутентификации, и действительно не понимаю, где взять каналы. Я получаю с неправильного URL-адреса? Если я знаю, что это не синтаксический анализатор, так как он отлично разбирает исходный канал cnet, а также любой другой прямо с их сайта.


person utahwithak    schedule 02.04.2011    source источник


Ответы (2)


NSURLConnection сделает запрос по указанному URL-адресу и загрузит все данные, которые там хранятся. Когда вы вводите http://www.google.com/reader/view/feed/http://news.cnet.com/2547-1_3-0-20.xml в свой веб-браузер, вы увидите, что это займет вы переходите на веб-сайт Google Reader (HTML), а не на XML-канал, который вы можете анализировать напрямую.

Я не уверен, откуда вы генерируете свои URL. Если вам известен URL-адрес самого XML-канала, вы должны просто использовать его напрямую. Похоже, что URL-адреса Google Reader имеют вид http://www.google.com/reader/view/feed/[feed_url]. Поэтому, если у вас уже есть URL-адрес Google Reader, вы можете извлечь URL-адрес канала и вместо этого использовать его для своего запроса.

Если по какой-то причине вам абсолютно необходимо пройти через Google, вы можете загрузить HTML-код и проанализировать его, чтобы найти _INPUT_STREAM_ID. Он содержит URL-адрес, с которого можно загрузить XML, и затем вы можете сделать второй запрос.

person Stephen Poletto    schedule 02.04.2011
comment
Хорошо, это имеет смысл, спасибо. Причина, по которой я хотел привязать к Google Reader, заключается в том, что он кеширует все каналы и извлекает старые записи. Это возможно? - person utahwithak; 02.04.2011
comment
К сожалению, я не знаю, как получить доступ к кешу. - person Stephen Poletto; 02.04.2011

Для тех, кто пытается реализовать это и все еще ищет, вот что я нашел, чтобы исправить этот вопрос.

Сначала вы должны подключиться к Google, затем получить токен, а затем взаимодействовать с веб-сайтом google.com/reader/api/0 / ...

вот сайт, который я нашел чрезвычайно полезным:

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

В нем описаны ключевые слова и способы взаимодействия с googlereader.

person utahwithak    schedule 03.04.2011