0

やあみんな、だから私はObjective-Cの領域に非常に新しく、インターネット接続のプログラミングのスタジアムにさらに新しいです。私はRSSリーダーアプリで作業しようとしていますが、XMLフィードを解析するために適切なNSXMLParserなどを設定することができました。次に、Googleリーダーに接続する機能を追加したいと思いました。接続して認証し、ページからリクエストすることはできますが、接続時に返されるのはサイトのまっすぐな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];  

そして、2つのデリゲートメソッド:

-(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

そして、これが受信したデータとして出力されるものです...そこにデータを入れると冗談です。StackOverflowはそれをHTMLとして解析し、そのように表示しました...

私はそれが認証エラーではないことを知っており、フィードを取得するためにどこに行くべきかについて本当に困惑しています。間違ったURLから取得していますか?私が知っているなら、それはパーサーではないので、cnetの元のフィードだけでなく、他のサイトからの直接のフィードも解析します。

4

2 に答える 2

1

NSURLConnection は、提供された URL にリクエストを送信し、そこに保存されているデータをダウンロードします。http://www.google.com/reader/view/feed/http://news.cnet.com/2547-1_3-0-20.xmlを Web ブラウザに入力すると、直接解析できる XML フィードではなく、Google リーダーのウェブサイト (HTML) に送信します。

どこから URL を生成しているのかわかりません。XML フィード自体の URL がわかっている場合は、それを直接使用する必要があります。Google リーダーの URL の形式は http://www.google.com/reader/view/feed/[feed_url] のようです。そのため、Google リーダーの URL が既にある場合は、フィードの URL を抽出して、代わりにそれをリクエストに使用できます。

何らかの理由でどうしても Google にアクセスする必要がある場合は、HTML をダウンロードして解析し、_INPUT_STREAM_ID を見つけることができます。これには、XML をダウンロードする URL が含まれており、2 番目の要求を行うことができます。

于 2011-04-02T07:00:03.410 に答える
0

これを実装しようと探していて、まだここを見ている人にとっては、この質問を修正するために私が見つけたものです。

まず、Google に接続してトークンを取得し、ウェブサイト google.com/reader/api/0/... とやり取りする必要があります。

私が非常に参考になったサイトは次のとおりです。

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

キーワードと googlereader の操作方法について概説します。

于 2011-04-03T21:06:33.903 に答える