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/?
这样,UIWebView
和 canGoBack
方法的连续 POST 请求的 URL 会变得不同。
我仍然不知道这是否是 UIWebView
中的错误,或者我们不能使用带有 UIWebView
的连续 POST 请求来获得 canGoBack
方法的工作原理。
【讨论】:
以上是关于UIWebView canGoBack 在使用 POST 请求时突然停止工作的主要内容,如果未能解决你的问题,请参考以下文章
我如何在 GeckoView 上使用 canGoBack()
Android WebView canGoBack 始终为真
【BUG笔记】WebView返回时重复加载问题(CanGoBack返回true)