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:

Solicitud incorrecta

Su navegador envió una solicitud que este servidor no pudo entender.

introduzca la descripción de la imagen aquí

No hay nada en el onReceivedError(WebView view, int errorCode, String description, String failingUrl) callback también.

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 🙂

  • Vista web de Android: evita que los gestos táctiles se pasen a la vista principal de los padres
  • ¿Por qué mi tamaño de fuente parece mucho más grande en el objeto de vista web android que cuando se ve en el navegador de Android?
  • ¿Puedo usar CloudKit en Android o en una aplicación basada en Web?
  • Cómo tratar un objeto JSON grande en Android
  • Mantenga la sesión entre loadUrl de Android WebView
  • Aumentar el tamaño de la cuota WebSQL en un WebView
  • Depurar HTTPS peticiones / respuestas con Fiddler en Android Phone don `t trabajo
  • Android WebView pierde cookies en los redireccionamientos
  • ¿Son las aplicaciones IOS y Android con Webview sólo consideradas híbridas o aplicaciones Web?
  • Android addJavascriptInterface equivalente en iOS
  • Cómo dividir Epub Html en páginas según el tamaño de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.