1

iPhone アプリで作業すると、Web から新聞記事が取得されます。

パフォーマンス上の理由から、最後の 10 件の記事のみが ごとに送信されますrequest

すべてが期待どおりに機能しますが、ユーザーが下にスクロールしてさらに読みたい場合、次の 10 件の記事を取得するにはどうすればよいですか?

  • 作業中: 最初requestに記事をくれました: 1 - 10
  • 動作していません:Request再度送信すると、記事が返されます: 11 - 20 ( を設定することによりoffset)

(API ドキュメントを読むときoffset、次の記事を取得するために を設定することになっていますが、機能しません。検索クエリに基づいて、常に同じ最初の 10 件の記事を取得します。)

frankfurtrequestを含む最後の 10 件の記事を検索し、を 10 に設定します。keyword offsetrequest

http://api.zeit.de/content?q=フランクフルト&limit=10&offset=10&api_key=MY_API_KEY

API ドキュメントから: 検索結果は、デフォルトで 10 件の一致に制限されています。limit パラメータを使用して、この値を増やすことができます。結果セットを反復処理するには、オフセット パラメータを制限の倍数に設定してリクエストを繰り返します。

アップデート:

- (IBAction)runBtnTapped:(id)sender
{
    NSError *error;

    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://api.zeit.de/content?q=frankfurt&fields=teaser_title%20AND%20release_date&limit=5&offset=5&sort=release_date%20desc&api_key=123456789"]];

    NSDictionary *dictFromData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSArray *array = dictFromData[@"matches"];
    NSLog(@"%@", array);
}

コンソール出力:

2013-01-10 17:21:39.261 ZEITreisen[94644:c07] (
        {
        "release_date" = "2013-01-03T06:00:00Z";
        "teaser_title" = "Im Stich gelassen";
    },
        {
        "release_date" = "2012-12-28T13:18:58Z";
        "teaser_title" = "Serbiens Nachwuchs baut den Weg nach Europa";
    },
        {
        "release_date" = "2012-12-27T10:18:07Z";
        "teaser_title" = "Das Fu\U00dfballgott bestrafte Hoffenheim";
    },
        {
        "release_date" = "2012-12-27T06:00:00Z";
        "teaser_title" = "Sind Fitschen und Jain die Richtigen f\U00fcr 2013?";
    },
        {
        "release_date" = "2012-12-27T06:00:00Z";
        "teaser_title" = Sparen;
    }
)
2013-01-10 17:21:43.447 ZEITreisen[94644:c07] (
        {
        "release_date" = "2013-01-03T06:00:00Z";
        "teaser_title" = "Im Stich gelassen";
    },
        {
        "release_date" = "2012-12-28T13:18:58Z";
        "teaser_title" = "Serbiens Nachwuchs baut den Weg nach Europa";
    },
        {
        "release_date" = "2012-12-27T10:18:07Z";
        "teaser_title" = "Das Fu\U00dfballgott bestrafte Hoffenheim";
    },
        {
        "release_date" = "2012-12-27T06:00:00Z";
        "teaser_title" = "Sind Fitschen und Jain die Richtigen f\U00fcr 2013?";
    },
        {
        "release_date" = "2012-12-27T06:00:00Z";
        "teaser_title" = Sparen;
    }
)
4

3 に答える 3

1

解決策を見つけました。Offset再呼び出しするたびに増加する必要があり、それが機能します。

例:

最初の呼び出し: (NO OFFSET)

http://api.zeit.de/content?q=frankfurt&fields=teaser_title%20AND%20release_date&limit=5&sort=release_date%20desc&api_key=123456789

次回 API を呼び出すときは、オフセットに 5 を追加するだけで機能します。

http://api.zeit.de/content?q=frankfurt&fields=teaser_title%20AND%20release_date&limit=5&offset=5&sort=release_date%20desc&api_key=123456789

注: 2 番目のリクエストでは、最初の 5 つの検索結果が除外され、次の 5 つが配信されます。

于 2013-01-10T16:51:45.477 に答える
0

APIが、オフセットを無視する点まで、一部のパラメーターを他のパラメーターよりも誤って優先するインスタンスに遭遇する可能性があります。デフォルトを使用しているので制限を削除するか、制限とオフセットの間で異なる数値を使用してみてください。オフセットが受け入れられない原因となる、いくつかの不十分な比較が行われている可能性があります。APIドキュメントがないと、何がうまくいかないのかを判断するのは困難です。クエリ文字列の変更が機能しない場合は、@Geraud.chの提案を2番目にします。APIプロバイダーに連絡してください。

編集は、実際のURLを投稿したことに気づきました。現在、ドキュメントを検索しています。

于 2013-01-10T16:50:12.293 に答える
0

コードがなければ、言うのは難しいです。しかし、あなたが心に留めていることは良いようです。

リクエストにエラーがある可能性があります (パラメータが適切に設定されているかどうかを確認するためにログに記録しましたか? 応答はどうですか?) または API にエラーがある可能性があります。その場合は、プロバイダーに直接連絡する必要があります。

于 2013-01-10T14:52:47.563 に答える