使用 iPhone 应用程序从网络上获取报纸文章。
出于性能目的,每个
request
仅发送最后 10 篇文章。
一切都按预期工作,但是当用户向下滚动并想要阅读更多内容时,如何获取接下来的 10 篇文章?
request
给我文章:1 - 10Request
再次发送应该给我文章:11 - 20(通过设置offset
)(当我阅读 API 文档时,我应该设置
offset
来获取下一篇文章,但它不起作用,我总是根据我的搜索查询得到相同的前 10 篇文章。)
按照
request
搜索最近 10 篇包含 keyword
frankfurt 的文章
并将 offset
设置为 10,当我再次发送 request
时,应该会向我发送接下来的 10 篇文章。
http://api.zeit.de/content?q=frankfurt&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;
}
)
找到解决方案。每次重新调用它时,
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 个结果。
您可能会遇到这样的情况:API 错误地将某些参数优先于其他参数,以致忽略您的偏移量。尝试删除限制,因为您使用的是默认值,或者尝试在限制和偏移之间使用不同的数字。可能会进行一些较差的比较,从而阻止您的抵消被接受。如果没有 API 文档,很难说到底出了什么问题。如果修改您的查询字符串不起作用,我会赞同 @Geraud.ch 的建议:联系 API 提供商。
编辑刚刚意识到您发布了实际的网址。我现在正在寻找文档。
没有任何代码,很难说。不过你的想法似乎不错。
您的请求中可能有错误(您是否记录了它们以查看参数是否设置正确,没有任何拼写错误?响应怎么样?)或者 API 可能有错误。在这种情况下,您应该直接联系提供商。