webview攔截內(nèi)容

1.APPdelegate里面注冊(cè)NSURLProtocol

[NSURLProtocolregisterClass:[CustomURLProtocolclass]];

CustomURLProtorcol 是繼承NSURLProtocol的類

2.遵守代理創(chuàng)建NSURLProtocol對(duì)象

@interfaceCustomURLProtocol()

@property(nonatomic,strong)NSURLConnection*connection

staticNSString*constURLProtocolHandledKey =@"URLProtocolHandledKey";//聲明鍵值

3.判斷攔截請(qǐng)求是何種請(qǐng)求


4.判斷攔截的內(nèi)容是否和上傳一樣,如果一樣就緩存上一次的


5.開始讀取本地加載的數(shù)據(jù)?

- (void)startLoading

{

NSURLRequest*request =self.request;

NSString*originUrlString = [request.URLabsoluteString];

NSLog(@"完整域名%@",originUrlString);

NSString*originHostString = [request.URLhost];

NSLog(@"主域名%@",originHostString);

if([Gamedictiondiccreategamedic].gamedictiondic==nil){

[Gamedictiondiccreategamedic].gamedictiondic=[NSMutableDictionarynew];

}

NSMutableDictionary*loadImageDic = [[NSMutableDictionaryalloc]init];

NSArray* array=[[NSArrayalloc]init];

array=@[@"bgFire.png",

@"avatar.jpg",

@"battle1.png",

@"battle2.png",

@"battle3.png",

@"battle4.png",

@"battle5.png",

@"battle6.png",

@"bg.jpg",

@"bgFire.png",

@"bgLoading.jpg",

@"blood.png",

@"booldIndicator.png",

@"bullet.png",

@"button1.png",

@"button2.png",

@"button3.png",

@"chat.png",

@"failure_bg.jpg",

@"failure_bg.png",

@"logout.png",

@"male.gif",

@"peng.png",

@"setting.png",

@"setting_bg.jpg",

@"share.png",

@"soundMute.png",

@"soundPlaying.png",

@"starting.jpg",

@"wall.png",

@"women.gif",

@"won_bg.jpg",

@"won_bg.png"

];

for(inti =0;i < (int)array.count;i++){

[loadImageDicsetObject:@"1"forKey:array[i]];

}

NSString* exestr=[originUrlStringpathExtension];

NSLog(@"后綴名%@",exestr);

BooleanimageFlag =false;

if([exestrisEqualToString:@"png"] || [exestrisEqualToString:@"jpg"]){

imageFlag =true;

}

if(imageFlag && [originHostStringisEqualToString:@"testpao.miusky.com"]){

NSString* lastimagestr=[originUrlStringsubstringFromIndex:53];

NSString* firstimagstr=[originUrlStringsubstringToIndex:53];

NSLog(@"截取前端的圖片%@",firstimagstr);

NSLog(@"截取后端的圖片的url%@",lastimagestr);

if([lastimagestrisEqualToString:@"bgFire.png"]){

NSLog(@"%@",loadImageDic);

}

NSLog(@"截取后端的圖片的after%@",[loadImageDicobjectForKey:[NSStringstringWithFormat:@"%@",lastimagestr]]);

NSLog(@"afar is %@",loadImageDic);

if([firstimagstrisEqualToString:[NSStringstringWithFormat:@"http://testpao.miusky.com:18080/statics/front/images/"]] && [loadImageDicobjectForKey:[NSStringstringWithFormat:@"%@",lastimagestr]] !=nil) {

NSString* bundlePath = [[NSBundlemainBundle]pathForResource:@"photo"ofType:@"bundle"];

NSString*strM = [bundlePathstringByAppendingPathComponent:[NSStringstringWithFormat:@"%@",lastimagestr]];

NSData* imagedata = [[Gamedictiondiccreategamedic].gamedictiondicobjectForKey:[NSStringstringWithFormat:@"%@",lastimagestr]];

if(imagedata==nil) {

imagedata = [NSDatadataWithContentsOfFile:strM];

[[Gamedictiondiccreategamedic].gamedictiondicsetObject:imagedataforKey:[NSStringstringWithFormat:@"%@",lastimagestr]];

}

NSString*mimeType=[NSStringstringWithFormat:@"image/jpg"];

NSURLResponse*response = [[NSURLResponsealloc]initWithURL:self.request.URL

MIMEType:mimeType

expectedContentLength:imagedata.length

textEncodingName:@"UTF8"];

//NSString *dataStr = [[NSString alloc] initWithData:imagedata encoding:NSUTF8StringEncoding];

//

//NSLog(@"%@",dataStr);

[[selfclient]URLProtocol:selfdidReceiveResponse:responsecacheStoragePolicy:NSURLCacheStorageNotAllowed];

[[selfclient]URLProtocol:selfdidLoadData:imagedata];

[[selfclient]URLProtocolDidFinishLoading:self];

NSLog(@"緩存的數(shù)據(jù)%@",self.request.URL);

}

}

NSMutableURLRequest*mutableReqeust = [[selfrequest]mutableCopy];

//打標(biāo)簽,防止無(wú)限循環(huán)

[NSURLProtocolsetProperty:@YESforKey:URLProtocolHandledKeyinRequest:mutableReqeust];

self.connection= [NSURLConnectionconnectionWithRequest:mutableReqeustdelegate:self];

}

6.讀取完的處理

- (void)stopLoading

{

[self.connectioncancel];

}

7.替換在線數(shù)據(jù)的代理方法

+(NSMutableURLRequest*)redirectHostInRequset:(NSMutableURLRequest*)request{
};

8.其他代理方法

#pragma mark - NSURLConnectionDelegate

- (void) connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response {

[self.clientURLProtocol:selfdidReceiveResponse:responsecacheStoragePolicy:NSURLCacheStorageNotAllowed];

NSLog(@"攔截的respon%@",response);

}

- (void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data {

[self.clientURLProtocol:selfdidLoadData:data];

}

- (void) connectionDidFinishLoading:(NSURLConnection*)connection {

[self.clientURLProtocolDidFinishLoading:self];

}

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error {

[self.clientURLProtocol:selfdidFailWithError:error];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容