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

时间:2012-02-27 13:02:45

标签: iphone objective-c ios cocoa-touch uiwebview

我正在加载这样的请求[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 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]] ];

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

最后,我发现,如果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请求,网址会有所不同。

我仍然不知道这是UIWebView中的错误,还是我们无法使用UIWebView的连续POST请求来使canGoBack方法有效。