簡體   English   中英

iOS UIWebView在NSURLConnection之后無法加載url

[英]iOS UIWebView not load url after NSURLConnection

使用iOS 7 SDK創建簡單的應用程序,但在ios 6.x和7.x上測試應用程序,結果相同。 有兩個ViewController –第一個MainScreen和第二個WebScreen

如果我在MainScreen上的URL上使用NSURLConnection,則UIWebView不會從同一站點加載內容。

在主屏幕中,我將json作為字符串從url加載

NSString *urlAsString = [NSString stringWithFormat:@"https://site.ws/api/index/index?method=get_count_new_orders&login=%@&password=%@", @"login", @"pass"];
NSURL *url = [[NSURL alloc] initWithString:urlAsString];
[NSURLConnection sendAsynchronousRequest:[[NSURLRequest alloc] initWithURL:url] queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

        if (error) {
            NSLog(@"error ::: %@", error);
        } else {

            NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

            NSError *jserror = nil;            
            NSDictionary *JSON = nil;
            JSON = [NSJSONSerialization JSONObjectWithData: [string dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error: &jserror];

        }

    }];

在第二個屏幕上,我嘗試從同一站點加載頁面:

NSString *stringUrl = [NSString stringWithFormat:@"https://reserva.ws/?lang=en"];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:stringUrl]]];

和UIWebView加載空白頁。

但是,如果我在第一個屏幕上評論[NSURLConnection sendAsynchronousRequest ...,則webview可以正常工作。

我對您的問題進行了小型研究,然后將您的代碼復制到Xcode。 我所做的是:

  1. 基於UINavigationController創建新項目。
  2. 在root vc中,我將第一個代碼示例復制到viewDidLoad方法。
  3. 在第二個vc中,我將第二個代碼示例復制到viewDidLoad方法。
  4. 在vc之間切換是基於從/到UINavigationController堆棧的pop / push vc。
  5. 最后,一切看起來都很好。

推送第二個vc webview之后,正確加載url源網頁。 我認為您應該使用webview委托屬性並將其設置為您的webview對象所在的vc。 然后在其中實現此vc方法:

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)錯誤

並檢查是否收到錯誤,以防您的Web視圖未加載。 它應該可以幫助您找到問題的根源。

經過幾天的考慮,我認為這可能是由於Cookie所致。 我嘗試[self.webView loadRequest ...

NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies])
{
    [storage deleteCookie:cookie];
}

而這個修復問題。

暫無
暫無

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

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