1

我正在尝试让重定向的 url 显示在控制台中。我可能在代码中的某个地方遗漏了一个小细节。任何帮助都会受到重视。

- (void)viewDidLoad {
 UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 119,     self.view.bounds.size.width, self.view.bounds.size.height - 165)];
webView.backgroundColor = [UIColor whiteColor];
//    webView.userInteractionEnabled = NO;
webView.opaque = NO;
[webView loadHTMLString:self.item.description baseURL:[NSURL URLWithString:self.item.link]];
[self.view addSubview:webView];
webView.delegate = self;
}


 - (NSURLRequest *)connection:(NSURLConnection *)connection
         willSendRequest:(NSURLRequest *)request
        redirectResponse:(NSURLResponse *)redirectResponse
{
//Make sure tinyurl is doing the redirection
if([[[redirectResponse URL] host] compare:@"bitly.com"
                                  options:NSCaseInsensitiveSearch] == NSOrderedSame)
{
    NSLog(@"Redirect Location: %@", [request URL]);
}

//call [connection cancel]; to cancel the redirect and stop receiving data
//return nil; to cancel redirect but continue receiving data
//return request; will continue the redirection as normal
    return request;
 }
4

2 回答 2

2

您正在使用NSURLConnectionDelegate的委托方法,它不是正确的方法UIWebView

您没有加载任何请求,UIWebView您希望NSLog如何打印出请求?如果您使用的是UIWebViewDelegate,那么检查您的情况的正确方法应该是:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType  {

  NSLog(@"Redirect Location: %@",[request.URL absoluteString]);
}
于 2013-03-12T16:01:41.410 回答
0
- (NSURLRequest *)connection:(NSURLConnection *)connection
         willSendRequest:(NSURLRequest *)request
        redirectResponse:(NSURLResponse *)redirectResponse

那不是 UIWebView 委托方法。因此,除非您没有显示所有代码,否则它永远不会被调用。

您需要创建一个 NSURLConnection 以像这样利用该调用。

NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
于 2013-03-12T16:00:01.220 回答