Ho uno WebView
con html contenente un modulo (post). Facendo clic su un pulsante di invio ottengo una risposta JSON.Come posso ottenere la risposta JSON di una richiesta POST in una WebView?
Come posso ottenere questo JSON?
Se non intercetto la richiesta, JSON viene visualizzato nella visualizzazione Web, quindi suppongo che dovrei usare shouldInterceptRequest
(sto usando l'API 12), ma non so come ottenerlo.
O forse c'è un modo migliore, come intercettare la risposta invece della richiesta?
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;
}
});
Grazie
Non funziona perché l'url è uguale a quello con il modulo, e con la tua soluzione ottengo l'html con il modulo. Invece di intercettare la richiesta, dovrei intercettare la risposta prima di visualizzarla nella webview, o inviare la richiesta con i parametri del post ... – jul
Dovresti ignorare la pagina del modulo e prendere il successivo caricamento della pagina ... Il documento dice "Gives l'applicazione host ha la possibilità di assumere il controllo quando un nuovo url sta per essere caricato nella WebView corrente. " Quindi dovresti impostare un flag quando il caricamento del modulo è completo, e prendere immediatamente il prossimo caricamento che accade .. – Ronnie
Non confrontare l'URL .. imposta un flag per sapere quando il modulo si sta caricando e quando json sta caricando .. – Ronnie