'Android WebView : onreceivedHttpError statusCode == 404

Here is the code:

    @Override
    @SuppressWarnings("deprecation")
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        ****
    }
    @Override
    @TargetApi(Build.VERSION_CODES.M)
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        ***
    }

    @Override
    @TargetApi(Build.VERSION_CODES.M)
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        ***
    }

onReceivedHttpError always got the 404 error (errorResonse.getStatusCode() == 404), but url even work fine on Chrome

thanks for any comments.



Solution 1:[1]

You may be seeing errors for specific items on the website instead of the whole webpage itself. From the docs, you can refer to the description of the methods as follows:

onReceivedError (API 23)

... Note that unlike the deprecated version of the callback, the new version will be called for any resource (iframe, image, etc), not just for the main page. Thus, it is recommended to perform minimum required work in this callback.

onReceivedHttpError

... This callback will be called for any resource (iframe, image, etc), not just for the main page. Thus, it is recommended to perform minimum required work in this callback. ...

Solution 2:[2]

I want to add to Abas response that you can determine if the error is caused by the loading of the the main URL or a child resource via the isForMainFrame parameter from the WebSourceRequest object that you receive in the respective callback.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Aba
Solution 2 J. Hegg