我正在构建一个用于搜索的应用,我想预览文档,显示第一个搜索字词周围的段落。这些文件的大小可能是20或30K,但由于它可能会返回100个结果,我想最大限度地减少通过3G连接传入的数据量。
我目前正在这样做以获取文档:
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlAddress]];
__block NSString *responseString;
[request setCompletionBlock:^{
responseString = [[request responseString] copy];
_preview = responseString;
}];
[request startSynchronous];
这一切都很好,但抓住了整个文件。我想做的只是抓住搜索关键字所在的位置。有没有办法a)看看有什么数据进来,以便我可以查看是否有匹配;和b)一旦我有匹配,取消下载,并只处理到目前为止的内容?
答案 0 :(得分:4)
尝试设置didReceiveDataSelector
。请求重新获取数据时将调用此选择器。因此,每次请求收到新的数据部分时,您都可以存储所有已恢复的数据并检查其大小。您也可以在所有数据中搜索关键字。
但这会阻止ASIHTTPRequest填充responseData或将数据写入downloadDestinationPath。所以你必须自己存储回复。