Ios NSCachedURLResponse返回对象,但UIWebView不解释内容

Ios NSCachedURLResponse返回对象,但UIWebView不解释内容,ios,objective-c,uiwebview,nsurlcache,Ios,Objective C,Uiwebview,Nsurlcache,我正在向UIWebView发送请求。加载的网页上有AJAX调用。我需要分析AJAX流量以确定用户是否登录。为此,我在AppDelegate中安装了NSURLCache: MYURLCache *cache = [[MYURLCache alloc] init]; [NSURLCache setSharedURLCache:cache]; 此MYURLCache类正确接收通过webview运行的流量。我只能终止AJAX调用。然后我生成自己的AJAX调用请求。这一个从Web服务器返回完美的响应。因

我正在向UIWebView发送请求。加载的网页上有AJAX调用。我需要分析AJAX流量以确定用户是否登录。为此,我在AppDelegate中安装了NSURLCache:

MYURLCache *cache = [[MYURLCache alloc] init];
[NSURLCache setSharedURLCache:cache];
此MYURLCache类正确接收通过webview运行的流量。我只能终止AJAX调用。然后我生成自己的AJAX调用请求。这一个从Web服务器返回完美的响应。因此,现在要做的最后一步是构造NSCachedURLResponse返回对象。我也做到了这一点,但是webview在返回对象时什么也不做。如果我只返回nil,则WebView可以加载所有内容(nil是NSURLCache的消息,表示未缓存任何内容,因此WebView应该开始自行加载)


我找到了一个解决这个问题的方法。。。我认为这与丢失的头球有关

如果我替换

NSURLResponse *urlresponse = [[NSURLResponse alloc] initWithURL:[request URL] MIMEType:@"application/json" expectedContentLength:[data length] textEncodingName:@"UTF-8"];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:urlresponse data:data];

整件事都起作用了。此回答还建议请求的附加自定义标头


在我的情况下,我不需要它。

我希望uiwebview在脱机状态下工作。因此,我使用并将响应存储在文档目录中。但在脱机模式下,当我尝试使用NSData*sData=(NSData*)[NSData dataWithContentsOfFile:filePath]访问此文件时;[webview加载数据:sData MIMEType:@“text/html”text编码名称:nil baseURL:nil];但它没有显示适当的内容。它显示编码数据。。。
NSURLResponse *urlresponse = [[NSURLResponse alloc] initWithURL:[request URL] MIMEType:@"application/json" expectedContentLength:[data length] textEncodingName:@"UTF-8"];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:urlresponse data:data];
NSHTTPURLResponse *urlresponse = [[NSHTTPURLResponse alloc] initWithURL:request.URL statusCode:200 HTTPVersion:@"1.1" headerFields:nil];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:urlresponse data:data];
NSDictionary *headers = @{@"Access-Control-Allow-Origin" : @"*", @"Access-Control-Allow-Headers" : @"Content-Type"};
NSHTTPURLResponse *urlresponse = [[NSHTTPURLResponse alloc] initWithURL:request.URL statusCode:200 HTTPVersion:@"1.1" headerFields:headers];