Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to detect 412 precondition failed errors in android webview url
    primarykey
    data
    text
    <p>I am using an authenticated webview for my app.There is a url called with respect to a search term, such that if you entered abc in the search box, it will call the url "<a href="http://something.com/something/" rel="nofollow noreferrer">http://something.com/something/</a><strong>abc</strong>/something". It loads fine, until I have an invalid searchterm say if I type in "INVALIDCRAP" it will still take the url as "<a href="http://something.com/something/" rel="nofollow noreferrer">http://something.com/something/</a><strong>INVALIDCRAP</strong>/something and try to load it thus giving me the 412 precondition error. I want to make it such that in case the identifier "INVALIDCRAP" doesnt exist, instead of 412 precondition error it will redirect me to say "google.com".Any ideas on how to go about it ? Thanks in advance Here is my code for the same:</p> <pre><code> @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = this.getArguments(); URL = getUrl(); if(bundle != null) mSearchTerm = getArguments().getString(SEARCH_TERM); } public void setSearchTerms(String sTerms){ mSearchTerm = sTerms; } private static String getUrl(){ String url = ""; final String getuuid = SharedPreferencesManager.getInstance().getUUID(); final String environmentApi = SharedPreferencesManager.getInstance().getEnvironmentApi(); if (environmentApi.equalsIgnoreCase(NetworkUtils.Apis.ALPHA)) { "https://something.com/service/v1/?q="+mSearchTerm+"%20revenue&amp;ui.theme=novadark&amp;uuid="+getuuid+"&amp;userAgent=android"; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (goingBack) { return null; } final MainActivity activity = (MainActivity) getActivity(); final Resources resources = Application.getAppResources(); activity.setBackPressListener(this); View view = inflater.inflate(R.layout.fragment_search_answers, container, false); mWebview = (WebView)view.findViewById(R.id.webview); progressBar = (LinearLayout) view.findViewById(R.id.loading); mWebview.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE); mWebview.setWebViewClient(new MyWebViewClient(this, mWebview)); mWebview.setBackgroundColor(0); mWebview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); mWebview.getSettings().setAllowFileAccess(true); mWebview.getSettings().setDomStorageEnabled(true); mWebview.getSettings().setJavaScriptEnabled(true); mWebview.setHttpAuthUsernamePassword(HOST, REALM, USERNAME, PASSWORD); mWebview.setScrollbarFadingEnabled(false); mWebview.getSettings().getLoadsImagesAutomatically(); if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.HONEYCOMB) mWebview.getSettings().setDisplayZoomControls(false); if(StringUtils.isEmpty(URL)){ }else if(!StringUtils.isEmpty(URL)){ if(URLUtil.isValidUrl(URL)){ mWebview.loadUrl(URL); }else{ mWebview.loadUrl("http://www.google.com"); } } return view; } public class MyWebViewClient extends WebViewClient { private String loginCookie; public MyWebViewClient(AnswersWebViewFragment answersWebViewFragment, WebView webview) { super(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { view.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { view.setVisibility(View.VISIBLE); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setCookie(url, loginCookie); final Animation fade = new AlphaAnimation(0.0f, 1.0f); fade.setDuration(200); view.startAnimation(fade); view.setVisibility(View.VISIBLE); progressBar.setVisibility(View.GONE); } @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl ) { Toast.makeText(view.getContext(), "Authentication Error", Toast.LENGTH_LONG).show(); super.onReceivedError(view, errorCode, description, failingUrl); } @Override public void onLoadResource( WebView view, String url ){ } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return super.shouldOverrideUrlLoading(view, url); } @Override public void onReceivedHttpAuthRequest( WebView view, final HttpAuthHandler handler, final String host, final String realm ){ handler.proceed(USERNAME,PASSWORD); } @Override public void onReceivedSslError( WebView view, SslErrorHandler handler, SslError error ) { handler.proceed(); } } </code></pre> <p>Here's the screen for the same: <img src="https://i.stack.imgur.com/Q801o.png" alt="enter image description here"></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload