UIWebView canGoBack 在使用 POST 请求时突然停止工作



我正在加载这样的请求[resultsWebView loadRequest:searchRequest];然后我这样做

- (void) webViewDidFinishLoad:(UIWebView *)webView {
    if ([resultsWebView canGoBack]) {
        [goBackButton setEnabled:YES];
    }
    else {
        [goBackButton setEnabled:NO];
    }
    if ([resultsWebView canGoForward]) {
        [goForwardButton setEnabled:YES];
    }
    else {
        [goForwardButton setEnabled:NO];
    }
}

canGoBack总是返回NO.它之前在工作,但它突然停止工作(我没有做任何代码更改(。我不知道这怎么可能?解决这个问题没有任何成功。有一个关于stackoverflow UIWebView可以GoBack的问题,canGoForward总是返回NO。但它是不同的,因为问题作者使用的是loadData,他使用loadRequest解决了问题。但是我已经在使用loadRequest.再一次,它之前在工作,但它突然停止工作(我没有做任何代码更改(。帮帮我。

问题原因:

params = [NSString stringWithFormat:@"query=%@", searchTextField.text];
NSMutableURLRequest *searchRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.example.com/do/m/]];
[searchRequest setHTTPMethod:@"POST"];
[searchRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

如果我使用如下所示的简单请求,它可以正常工作。

NSURLRequest *searchRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://www.example.com/do/m/?%@", params]] ];

谢谢

即使您可以看到页面在 Web 视图中成功呈现,请求也可能失败,您还需要将这些后退/前进逻辑设置为 – webView:didFailLoadWithError:

最后,我发现,如果 URL 在 loadRequest 方法的连续 POST 请求中相同,那么canGoBack不起作用。它适用于简单的 GET 请求,因为 URL 不同。 为了解决这个问题,我发送了带有两个URL的连续POST请求,从UIWebView的角度来看是不同的,但从服务器的角度来看实际上是相同的。我正在通过添加问号(?(为连续的 POST 请求设置不同的 URL。

https://www.example.com/do/m/

https://www.example.com/do/m/?

这样,对于UIWebView的连续 POST 请求,URL 会变得不同,并且canGoBack方法有效。

我仍然不知道这是否是UIWebView中的错误,或者我们不能使用连续的 POST UIWebView请求来获得canGoBack方法的工作。

最新更新