8

CSS、JavaScript、画像ファイルなどを含む iOS で Web ページ全体をダウンロードするために使用できる ASIHTTPRequest ライブラリの ASIWebPageRequest に代わるものはありますか? AFNetworking フレームワークで同様のクラスを見つけることができないようで、これまでのところ検索は成功していません。ASIHTTPRequest は、どのアプリでもまったく機能しないように見えるため使用できません。iOS7 で機能する例は見つかりませんでした。とにかく、もっと最近のものを使用したいと思います。

基本的に、Web ページ全体を iPhone/iPad のディレクトリにローカルに保存して、ユーザーがローカルで編集し、ディレクトリ全体を後で Web サーバーに送信できるようにしたいと考えています。また、ユーザーは UIWebView でいつでも Web ページを表示できる必要があります。

これが不可能な場合は、HTML ファイルをダウンロードし、それを解析して外部リソースの URL を見つけ、それらを個別にダウンロードする必要があります。私はむしろこれをやりたくないのですが、そうしなければならない場合、これを達成するための最良のライブラリは何ですか?

私を助けてくれてありがとう!

4

3 に答える 3

2

あなたは何かwgetを求めているようですが、iOSでそれができるかどうかはわかりません。

ネイティブ メソッドNSString stringWithContentsOfURL:encoding:error:を使用して、Web ページの HTML を取得できます。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/clm/NSString/stringWithContentsOfURL:encoding:error :

于 2013-10-27T08:33:09.957 に答える
1

私は UIWebView を使用し、それが行うすべてのリクエストをキャッシュします

于 2013-10-27T09:05:18.583 に答える
1

カスタム NSURLProtocol を介して、アプリから作成されたすべての HTTP 要求をインターセプトできます。この概念を拡張する必要がありますが、プロジェクトにドロップすると、(UIWebView などから) 行われたすべての要求をログアウトする単純なクラスを次に示します。

@interface TSHttpLoggingURLProtocol : NSURLProtocol
@end

@implementation TSHttpLoggingURLProtocol

+ (void) load
{
    [NSURLProtocol registerClass: self];
}

+ (BOOL) canInitWithRequest: (NSURLRequest *) request
{
    NSLog( @"%@", request.URL );

    return NO;
}

@end

これを拡張して、実際にプロトコル実装からのリクエストを実行できます (より完全な例については、https://github.com/rnapier/RNCachingURLProtocolを参照してください)。または、リクエストを追跡して、後で自分でダウンロードすることもできます。

このようなプロトコル ハンドラーを UIWebView の特定のインスタンスに関連付ける簡単な方法はありません。これで、アプリ内のすべてのリクエストをインターセプトします。(注意 - iOS7 では、プロトコルを特定の NSURLSession に登録できます。これらの場合、グローバルに登録されたプロトコル ハンドラは傍受されないと思います。)

于 2013-10-31T22:01:59.823 に答える