Пытаюсь проверить, загружается ли URL в IOS. UIWebView имеет ошибку или нет, я использую приведенный ниже код, чтобы получить код статуса запроса URL, если 200
я хочу установить isRequestWebOk
на YES
, иначе я будет использовать значение по умолчанию NO
, кажется, что все работает хорошо, за исключением того, что isRequestWebOk
по-прежнему возвращает NO
, даже если код состояния равен 200, и я устанавливаю его if(200){isRequestWebOk = YES;}
.
Пожалуйста, кто-нибудь может мне помочь, я не знаю, почему не работает должным образом.
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType{
static BOOL isRequestWeb = YES;
static BOOL isRequestWebOk = NO;
NSString *embedHTML = @"<html><head></head><body style='color:#000;'><p>Error</p></body></html>";
if (isRequestWeb) {
//NSHTTPURLResponse *response = nil;
//NSData *data = [NSURLConnection sendSynchronousRequest:inRequest returningResponse:&response error:nil];
//if (response.statusCode == 404) {}
[[[NSURLSession sharedSession] dataTaskWithRequest:inRequest completionHandler:^(NSData * data, NSURLResponse * response, NSError * error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSInteger statusCode = httpResponse.statusCode;
if (statusCode >= 200 && statusCode < 300){
/*I think this do set but i can't access it outside the completionHandler but i really need to check it outside as i cannot do many other things inside here*/
isRequestWebOk = YES;
NSLog(@"GOOD");
}else if (statusCode == 404) {
NSLog(@"code for 404");
}else if (statusCode == 403) {
NSLog(@"code for 403");
}else if (statusCode == 500) {
NSLog(@"code for 500");
}else{
NSLog(@"code for ALL");
isRequestWebOk = YES;
}
NSLog(@"code is what: %ld", (long)statusCode);
}] resume];
isRequestWeb = NO;
/*This is where am checking for isRequestWebOk if true or not but it always return false*/
if(isRequestWebOk){
NSLog(@"Request is okay 200");
return YES;
}else{
NSLog(@"Bad Request b4004");
inWeb.userInteractionEnabled = NO;
inWeb.opaque = NO;
inWeb.backgroundColor = [UIColor clearColor];
[inWeb loadHTMLString: embedHTML baseURL: nil];
return NO;
}
}
return YES;
}
Я думаю, что это действительно так, но я не могу получить к нему доступ вне завершения, но мне действительно нужно проверить его снаружи, так как внутри я не могу делать много других вещей