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

Posted

技术标签:

【中文标题】UIWebView canGoBack 在使用 POST 请求时突然停止工作【英文标题】:UIWebView canGoBack stopped working suddenly when using POST request 【发布时间】:2012-02-27 13:02:44 【问题描述】:

我正在加载这样的请求[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。 它之前工作过,但突然停止工作(我没有做任何代码更改)。我不知道这怎么可能?没有成功解决这个问题。 *** 上有一个问题UIWebView canGoBack and canGoForward always return 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]] ];

谢谢

【问题讨论】:

什么不起作用?是否总是返回NO 是的,它总是返回不。谢谢。也编辑过问题。 我找到了原因,但不知道为什么会这样。用原因更新了我的问题。 我只需要发送 POST 请求。有谁知道做这项工作? 【参考方案1】:

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

【讨论】:

我已经这样做了,并且还使用断点检查请求是否失败。请求没有失败。无论如何,谢谢。【参考方案2】:

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

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

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

这样,UIWebViewcanGoBack 方法的连续 POST 请求的 URL 会变得不同。

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

【讨论】:

以上是关于UIWebView canGoBack 在使用 POST 请求时突然停止工作的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 GeckoView 上使用 canGoBack()

Android WebView canGoBack 始终为真

【BUG笔记】WebView返回时重复加载问题(CanGoBack返回true)

当URL相似时,Android WebView canGoBack()返回false

使用 UIWebView 播放流视频问题

移除项目中的UIWebView