使用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;
}
)
答案 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提供商。
编辑刚刚意识到您发布了实际的网址。我现在正在搜索文档。