У меня есть WebView
с html, содержащий форму (сообщение). При нажатии кнопки отправки я получаю ответ JSON.Как я могу получить ответ JSON запроса POST в WebView?
Как я могу получить этот JSON?
Если я не перехватываю запрос, json отображается в веб-представлении, поэтому я предполагаю, что должен использовать shouldInterceptRequest
(я использую API 12), но я не знаю, как получить json в нем.
Или, может быть, есть лучший способ, как перехват ответа вместо запроса?
mWebView.loadUrl(myURL);
isPageLoaded = false; // used because the url is the same for the response
mWebView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest (WebView view, String url) {
if(isPageLoaded){
// get the json
return null;
}
else return super.shouldInterceptRequest(view, url);
}
public void onPageFinished(WebView view, String url) {
isPageLoaded = true;
}
});
Благодаря
Это не работает, потому что URL-адрес совпадает с адресом с формой, и с вашим решением я получаю html с формой. Вместо того, чтобы перехватывать запрос, я должен перехватить ответ перед его отображением в веб-просмотре или отправить запрос с параметрами post ... – jul
Вы должны проигнорировать страницу формы и поймать загрузку следующей страницы ... В документе говорится: «Дает приложение-хозяин получит возможность захватить элемент управления, когда новый URL-адрес будет загружен в текущем WebView ». Таким образом, вы должны установить флаг при завершении загрузки формы и уловить следующую следующую загрузку. – Ronnie
Не сравнивайте URL. Установите флаг, чтобы узнать, когда форма загружается и когда json загружается. – Ronnie