通过报纸API工程中的JSON获取最近10篇文章,但如何加载下一个10?

时间:2013-01-10 14:18:58

标签: iphone json api offset

使用iPhone应用程序从网络上获取报纸文章。

出于效果目的,我们只会根据request发送最后10篇文章。

所有工作都按预期工作,但如果用户向下滚动并想要阅读更多文章,我如何获得接下来的10篇文章?

  • 工作:首先request给我文章:1 - 10
  • 不工作Request再次发送应该给我文章:11 - 20(通过设置offset

(当我阅读API文档时,我应该设置offset来获取下一篇文章,但它不起作用,我总是根据我的搜索查询得到相同的前10篇文章。)

request次搜索其中包含keyword 法兰克福的最近10篇文章后 并设置一个10 offset,当我再次发送request时,它会向我发送接下来的10篇文章。

http://api.zeit.de/content?q=frankfurt&limit=10&offset=10&api_key=MY_API_KEY

来自API文档: 默认情况下,搜索结果限制为10个匹配。您可以使用limit参数增加此值。要迭代结果集,请将offset参数设置为限制的倍数重复您的请求。

更新:

- (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);
}

CONSOLE OUTPUT:

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;
    }
)

3 个答案:

答案 0 :(得分:1)

找到解决方案。每次重新调用它时,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

注意:第二个请求将前5个搜索结果排除,然后传递下一个5。

答案 1 :(得分:0)

没有任何代码,很难说。但你的想法似乎很好。

您的请求中可能有错误(您是否已记录它们以查看参数是否设置正确,没有任何拼写错误?响应如何?)或API可能有错误。在这种情况下,您应该直接联系提供商。

答案 2 :(得分:0)

您可能会遇到API错误地将某些参数优先于其他参数而忽略您的偏移量的实例。尝试删除限制,因为您使用默认值,或尝试在限制和偏移之间使用不同的数字。可能会进行一些糟糕的比较,以防止您的偏移被接受。没有API文档,很难说会出现什么问题。如果修改查询字符串不起作用,我会提出@ Geraud.ch的建议:联系API提供商。

编辑刚刚意识到您发布了实际的网址。我现在正在搜索文档。