4

UIWebView からの初期ロード リクエストを次のようにインターセプトできます。

(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType.

読み込んでいるページからのすべてのリクエストをログに記録するにはどうすればよいですか?

4

3 に答える 3

9

更新:別のオプションはNSURLProtocol、Web ビューからのすべてのリクエストを含め、アプリケーションが行うリクエストを聞くために使用することです。


クリエイティブな解決策を提案します。これは実際には望んでいるものではありませんが、SDK では現時点では実際には不可能であるため、これが唯一の可能な解決策です。

@interface PrintingCache : NSURLCache
{
}
@end

@implementation PrintingCache

- (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request
{
    NSLog(@"url %@", request.URL.absoluteString);

    return [super cachedResponseForRequest:request];
}
@end

アプリのデリゲートで、次の操作を行います。

NSString *path = ...// the path to the cache file
NSUInteger discCapacity = 10*1024*1024;
NSUInteger memoryCapacity = 512*1024;

FilteredWebCache *cache = [[Printing alloc] initWithMemoryCapacity: memoryCapacity diskCapacity: discCapacity diskPath:path];
[NSURLCache setSharedURLCache:cache];

これにより、共有キャッシュが作成され、Web ビューを含め、アプリケーションのすべての URL リクエストがこのキャッシュを通過します。ただし、他のソースから不要な URL を取得する場合があります。

于 2013-01-24T22:49:45.007 に答える
1

以下のコードを試してください

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"url %@", [[request URL] absoluteString]);
return YES;
}

それがあなたを助けることを願っています。

于 2013-01-24T13:35:42.613 に答える
-3

これは機能します:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"url %@", [[request URL] absoluteString]);
return YES;
}

必ず入れてくださいwebView.delegate = self;[super viewDidLoad]そうしないと、何も表示されません。

于 2013-01-24T21:56:23.827 に答える