Получите код ответа http из каждого запроса UIWebView

Мне нужно проверить код состояния ответа при загрузке любого URL-адреса в веб-просмотре fo. На данный момент мы можем рассмотреть любое веб-приложение, которое я загружаю в веб-представлении. Поэтому мне нужно отслеживать каждый запрос в этом веб-представлении и соответствующим образом проверять код ответа. Чтобы найти код ответа, мне нужно использовать NSUrlConnection внутри метода делегата uiwebview «shouldStartLoadWithrequest». Что-то вроде этого -

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
        navigationType:(UIWebViewNavigationType)navigationType{
      NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
      if (conn == nil) {
         NSLog(@"cannot create connection");
      }
      return YES;
}

И NSURLConnectionDelegate как --

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    NSLog(@"connection:didReceiveResponse");
    [self log:@"received response."];
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
    int status = [httpResponse statusCode];
     NSLog(@"http status code: %d", status);
    if (status == 200) {
      NSLog(@"Response OK");
    }
    else {
       NSLog(@"Response is not OK");
    }
}

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
   NSLog(@"connection:didReceiveData");
}

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    NSLog(@"connection:didFailWithError - %@", error);
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection{
   NSLog(@"connectionDidFinishLoading");
}

Но в этом процессе на сервере есть 2 вызова. Один для UIWebview, а другой для NSurlConnection. Мне просто нужен один звонок на сервер, в котором я смогу найти код состояния. Может ли кто-нибудь помочь мне в этом?


person mobizen    schedule 24.03.2014    source источник
comment
Я не думаю, что будет даже ответ в методе shouldStartLoadWithRequest, так как он еще не запущен. Разве вы не можете просто использовать метод webViewDidFinishLoad?   -  person Darren    schedule 22.11.2014
comment
Я сталкиваюсь с той же проблемой. Я прочитал тонну ответов stackoverflow, но я наткнулся на учебник от Рэя, и это должно быть выполнимо всего одним вызовом... raywenderlich.com/59982/nsurlprotocol-tutorial   -  person Skodik.o    schedule 28.02.2016
comment
@Skodik.o: Да, я реализовал это с помощью NSURLProtocol. Это решает проблему.   -  person mobizen    schedule 29.02.2016


Ответы (1)


Я реализовал это с помощью

NSURLпротокол

. Для получения более подробной информации вы можете проверить это здесь - NSURLProtocol

person mobizen    schedule 29.02.2016