2011-07-16 15 views
1

私はあなたが検索を行う場所にアプリケーションを構築しています。最初の検索用語の前後に段落を表示してドキュメントをプレビューしたいと思います。ドキュメントのサイズは20〜30Kですが、結果が100になる可能性があるため、3G接続でのデータの受信量を最小限に抑えたいと考えています。私は現在、文書を取得するためにこれをやっているASIHTTPRequest:ダウンロードサイズを制限する

__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlAddress]]; 
    __block NSString *responseString; 
    [request setCompletionBlock:^{ 
     responseString = [[request responseString] copy]; 

     _preview = responseString; 
    }]; 

    [request startSynchronous]; 

このすべてはうまく動作しますが、文書全体をつかみます。私がしたいのは、検索キーワードがある場所につかまるだけです。どのようなデータが来ているのかを見ることができるので、一致があるかどうかを確認することができます。 b)一度マッチしたら、ダウンロードをキャンセルし、これまでの内容を処理しますか?

答えて

4

didReceiveDataSelectorを設定してください。このセレクタは、要求がデータを受け取ったときに呼び出されます。したがって、リクエストが新しい部分のデータを受け取るたびに、受け取ったすべてのデータを保存し、サイズを確認することができます。また、すべてのデータでキーワードを検索することができます。
これにより、ASIHTTPRequestがresponseDataにデータを設定したり、データをdownloadDestinationPathに書き込んだりできなくなります。だからあなたは自分で回答を保存しなければなりません。

+0

ブリリアント;私はこれを行こう!そこからダウンロードをキャンセルする方法はありますか? –

+0

うん。要求を停止するには '[request cancel]'メソッドまたは '[request clearDelegatesAndCancel]'メソッドを使用できます。 2番目のメソッドは、didFinishSelectorを実行しませんでした。 – VenoMKO