簡體   English   中英

UIWebView loadRequest:iOS 6中的NSURLErrorTimedout連續失敗

[英]UIWebView loadRequest: continuously failing with NSURLErrorTimedout in iOS 6

UIWebView中的本機連接啟動失敗並出現超時問題。 一旦超時開始,只有硬退出的應用程序才能解決它。

超時隨機開始,但一旦啟動,只有硬退出才能解決它。

因為硬退出正在解決它,它是一個客戶端而不是服務器問題。 但是使用UIWebView的可用API,我無法弄清楚問題。

到目前為止只能在iOS6 iPhone和iPad上看到它。 我每次都在點擊相同的URL,我正在緩存JS,CSS資源(可能是iOS6 webview緩存有問題)。

//code
//usual webview loading code 
//except I am setting cookies everytime before load request 
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.webview.delegate = self;


    NSString * urlString;

    urlString = @"https://www.myserver.com/";

    NSURL * url = [NSURL URLWithString:urlString];


    // I create and set some cookies here. 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:self.mobilePageURL mainDocumentURL:self.mobilePageURL];


    [self.webview loadRequest:[NSURLRequest requestWithURL:url]];

}

-(void)webViewDidStartLoad:(UIWebView *)webView
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    if([error.domain isEqualToString:NSURLErrorDomain] && error.code != NSURLErrorCancelled)
    {
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

     UIAlertView * alert  =  [[UIAlertView alloc] init];

     NSString * errorMessage = [NSString stringWithFormat:@"%d",error.code];

     [alert setMessage: errorMessage];
     [alert addButtonWithTitle:@"Ok"];
         [alert show];
    }
}

您可以像這樣更改NSURL代碼行:

NSURL * url = [NSURL URLWithString:rephrasing[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

也許它會解決你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM