Ios 通过 NSURLCache 拦截 UIWebview 请求并替换响应
Ios Intercept UIWebview request via NSURLCache and replace the response
我正在为 Ios 开发 Epub Reader,注意我没有使用任何 epub 库,我自己解析 epub。
我需要一种将资源从 epub 加载到 UIWebView
的方法,例如图像或 CSS 文件...(在 html 文件中请求的资源)。
为此,我决定使用 NSURLCache
class 并覆盖它的方法 (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
所以我可以拦截请求并从 epub 中找到正确的数据然后创建一个 NSCachedURLResponse
和 return 它。
到目前为止一切顺利。 但是 问题是数据(即图像)不会显示在网络视图中。看下面的代码:
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
{
/*
the request.URL is something like this applewebdata://UUID/OEBPS/Images/cover.jpg ,
so the getResourcePathFromRequest give me the path OEBPS/Images/cover.jpg,
so i can find the right data in epub
*/
NSString *resourcePath = [self getResourcePathFromRequest:request.URL];
/*
ResourceResponse is a class contaning data and mimeType,
i tested this and the data and mimeType are good so this is not the problem
*/
ResourceResponse *response = [[self getBook] fetch:resourcePath];
NSURLResponse *urlResponse = [[NSURLResponse alloc] initWithURL:[request URL] MIMEType:response.mMimeType expectedContentLength:[response.mData length] textEncodingName:@"UTF-8"];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:urlResponse data:response.mData];
return cachedResponse;
}
此时一切看起来都很正常,调用了方法,找到了正确的数据和响应对象 return,但它不会将图像加载到 webview 中。
所以问题是什么?
提前tnx。
注意:我是ios编程世界的新手(来自android:)
我用 base url (http://localhost) 加载了数据,一切正常。
我正在为 Ios 开发 Epub Reader,注意我没有使用任何 epub 库,我自己解析 epub。
我需要一种将资源从 epub 加载到 UIWebView
的方法,例如图像或 CSS 文件...(在 html 文件中请求的资源)。
为此,我决定使用 NSURLCache
class 并覆盖它的方法 (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
所以我可以拦截请求并从 epub 中找到正确的数据然后创建一个 NSCachedURLResponse
和 return 它。
到目前为止一切顺利。 但是 问题是数据(即图像)不会显示在网络视图中。看下面的代码:
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
{
/*
the request.URL is something like this applewebdata://UUID/OEBPS/Images/cover.jpg ,
so the getResourcePathFromRequest give me the path OEBPS/Images/cover.jpg,
so i can find the right data in epub
*/
NSString *resourcePath = [self getResourcePathFromRequest:request.URL];
/*
ResourceResponse is a class contaning data and mimeType,
i tested this and the data and mimeType are good so this is not the problem
*/
ResourceResponse *response = [[self getBook] fetch:resourcePath];
NSURLResponse *urlResponse = [[NSURLResponse alloc] initWithURL:[request URL] MIMEType:response.mMimeType expectedContentLength:[response.mData length] textEncodingName:@"UTF-8"];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:urlResponse data:response.mData];
return cachedResponse;
}
此时一切看起来都很正常,调用了方法,找到了正确的数据和响应对象 return,但它不会将图像加载到 webview 中。
所以问题是什么?
提前tnx。
注意:我是ios编程世界的新手(来自android:)
我用 base url (http://localhost) 加载了数据,一切正常。