UIWebView canGoBack внезапно перестал работать при использовании запроса POST - PullRequest
2 голосов
/ 27 февраля 2012

Я загружаю запрос вот так [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 и 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]] ];

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Наконец, я обнаружил, что если URL-адрес совпадает в последовательных запросах POST для метода loadRequest, то canGoBack не работает.Это работало для простых запросов GET, потому что URL-адреса были разными.Чтобы это исправить, я отправил последовательные запросы POST с двумя URL-адресами, которые отличаются с точки зрения UIWebView, но фактически одинаковы с точки зрения сервера.Я устанавливаю различные URL-адреса поочередно для последовательных запросов POST, добавляя знак вопроса (?).

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

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

Таким образом,URL-адреса становятся разными для последовательных запросов POST UIWebView, а метод canGoBack работает.

Тем не менее я не могу сказать, является ли это ошибкой в ​​UIWebView или мы не можем использовать последовательные запросы POST с UIWebView для полученияметод canGoBack работает.

0 голосов
/ 27 февраля 2012

Запрос может быть неудачным, даже если вы видите страницу, успешно отображаемую в веб-представлении, вам также нужно установить для логики возврата / пересылки значение – webView:didFailLoadWithError:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...