WebView: solicitud incorrecta al cargar una url
Cuando intento cargar una URL, en un WebView:
private final WebViewClient webViewClient = new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { loadUrl(url); return true; } }; webView.setWebViewClient(webViewClient); webView.loadUrl("https://post.craigslist.org/");
Obtengo este html en la página:
- Mostrar una ubicación geográfica mediante webview
- Android: Obtener la posición de desplazamiento de un WebView
- ¿Cuál es la mejor manera de apoyar métodos obsoletos que son reemplazados por otros nuevos?
- Android: ¿Cómo mostrar un mapa de bits en un WebView?
- Cómo pasar un valor de cadena a webView de una actividad
Solicitud incorrecta
Su navegador envió una solicitud que este servidor no pudo entender.
No hay nada en el onReceivedError(WebView view, int errorCode, String description, String failingUrl)
callback también.
- Tiempo de espera para solicitud de servidor hecha usando "Volley" solo en Android no iOS
- Error en Callin Java webservice de Android usando k-Soap
- ¿Necesito aplicaciones separadas de Twitter para la integración con aplicaciones de iOS y Android + Web?
- Fondo-adjunto: fijo no funciona en android / móvil
- Leer el contenido HTML de los widgets de webview
- Reproducción de un video local de aplicación (.mp4) en una vista web
- Cómo mostrar texto marathi en Android procedente de webservice
- Cambiar usuario o volver a autenticar con Instagram
Te está dando este error porque no estás manejando los redireccionamientos correctamente desde esta página web prueba esto
webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url){ // do your handling codes here, which url is the requested url // probably you need to open that url rather than redirect: view.loadUrl(url); return false; // then it is not handled by default action } });
Intente esto:
public class WebPageLoader extends Activity { final Activity activity = this; private String html; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.activity_main); WebView webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webview.loadUrl("https://post.craigslist.org/"); webView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { activity.setTitle("Loading..."); activity.setProgress(progress * 100); if(progress == 100) activity.setTitle(R.string.app_name); } }); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); } }
Trata de cambiar
public boolean shouldOverrideUrlLoading(WebView view, String url) { loadUrl(url); return true; }
Esto a
public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); }
Espero que esto ayude.
Actualizar
mWebView = (WebView) getView().findViewById(R.id.webView1); if (Patterns.WEB_URL.matcher(url).matches()) mWebView.loadUrl(url); webClient = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onFormResubmission(WebView view, Message dontResend, Message resend) { // TODO Auto-generated method stub super.onFormResubmission(view, dontResend, resend); } @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); if (url.contains("purchasehistory.html")) { mURLNavigation.onURLNavigation(3); } } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } }; WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.setWebViewClient(webClient);
Este código funciona para mí ..
Siempre es mejor mantener el número de nivel API cuando obtenga este tipo de problema.
Por ejemplo, en la API 19 la función shouldOverrideUrlLoading falla al llamar comprueba esto, http://developer.android.com/guide/webapps/migrating.html
Nota: shouldOverrideUrlLoading no se llama al cargar una URL como
loadUrl (" http://google.com ")
y también redireccionar no funciona en API nivel 11 y inferior. (Como usted respondió a Abdul, no se llama)
Utilice una solución: Quiero decir override onPageStarted que funciona en todas las versiones. Pero, lo único es que se llama poco después.
Trabajo al azar alrededor:
Utilice WebView.getSettings (). SetUseWideViewPort (true) en Android 4.1.1, funciona.
Así es como se carga una url en un WebView:
private WebView URL URL = (WebView) WebDialog.findViewById(R.id.url1); URL.setWebViewClient(new WebViewClient()); URL.setScrollbarFadingEnabled(true); URL.setHorizontalScrollBarEnabled(false); URL.getSettings().setJavaScriptEnabled(true); URL.getSettings().setUserAgentString("My URL"); URL.loadUrl("//the first url goes here");
Usted necesita entonces construir un diseño similar a esto como un archivo xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RelativeLayout <WebView android:id="@+id/ticketline" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@id/Title" android:layout_marginTop="5dip" /> </RelativeLayout> </LinearLayout>
Espero que esto ayude 🙂
- Excepción al iniciar sesión con Simple API de Facebook (Sesión: se ha intentado abrir una sesión que tiene una solicitud pendiente)
- Dagger proyecto fallando silenciosamente en getApplication anular