【问题标题】:File not found exception on webview - when in real the file exists在 webview 上找不到文件异常 - 当文件实际存在时
【发布时间】:2016-02-06 15:49:31
【问题描述】:

我正在尝试在 web 视图中加载网页,但出现以下异常:

java.io.FileNotFoundException: https://fonts.googleapis.com/css?family=Roboto:400,300,500,700,900,700italic
02-05 18:52:44.497 5263-6265/com.RM W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:206)
02-05 18:52:44.497 5263-6265/com.RM W/System.err:     at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
02-05 18:52:44.497 5263-6265/com.RM W/System.err:     at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
02-05 18:52:44.497 5263-6265/com.RM W/System.err:     at navigationfragments.FragmentWebView$1.shouldInterceptRequest(FragmentWebView.java:124)
02-05 18:52:44.497 5263-6265/com.RM W/System.err:     at android.webkit.WebViewClient.shouldInterceptRequest(WebViewClient.java:125)
02-05 18:52:44.498 5263-6265/com.RM W/System.err:     at com.android.webview.chromium.WebViewContentsClientAdapter.shouldInterceptRequest(WebViewContentsClientAdapter.java:297)
02-05 18:52:44.498 5263-6265/com.RM W/System.err:     at org.chromium.android_webview.AwContents$BackgroundThreadClientImpl.shouldInterceptRequest(AwContents.java:465)
02-05 18:52:44.498 5263-6265/com.CRM W/System.err:     at org.chromium.android_webview.AwContentsBackgroundThreadClient.shouldInterceptRequestFromNative(AwContentsBackgroundThreadClient.java:38)

但令我惊讶的是,如果我点击链接:

https://fonts.googleapis.com/css?family=Roboto:400,300,500,700,900,700italic

我实际上可以在我的浏览器中加载它。许多其他文件也会发生这种情况,通常可以从浏览器访问这些文件。我在这里想念什么?

下面是我的自定义实现:

WebViewClient webViewClient = new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                startAnim();
                super.onPageStarted(view, url, favicon);
            }


            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                if (webView.getProgress() == 100) {
                    stopAnim();
                }
            }


            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                NoNetworkDialog.showNetworkDialog(getActivity());

            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (!CheckConnection.isNetworkConnected(getActivity())) {
                    NoNetworkDialog.showNetworkDialog(getActivity());
                    return false;
                } else {
                    view.loadUrl(url);
                    return true;
                }

            }

            @Override
            public WebResourceResponse shouldInterceptRequest(WebView view, String url1) {

                //  if (!CheckConnection.isNetworkConnected(getActivity())) {
                //    NoNetworkDialog.showNetworkDialog(getActivity());
                //  } else {
                try {
                    URL url = new URL(url1);

                    HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();


                    CookieManager cookieManager = CookieManager.getInstance();
                    String cookie = cookieManager.getCookie(url.getHost());


                    urlConnection.setDoOutput(true);
                    urlConnection.setRequestProperty("Cookie", cookie);
                    urlConnection.setRequestProperty("***_USER_AGENT", "***_app");
                    urlConnection.setRequestMethod("GET");

                    InputStream in = new BufferedInputStream(urlConnection.getInputStream());

                    return new WebResourceResponse(urlConnection.getContentType(), "UTF-8", in);

                } catch (Exception e) {
                    e.printStackTrace();

                    return null;
                }
                //  }
                //  return null;
            }
        };

这是我得到的其他网址:

https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js

https://www.google.com/jsapi

https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js

【问题讨论】:

    标签: android google-api android-webview httpurlconnection


    【解决方案1】:

    删除setDoOutput() 看看是否有效。您没有发出 POST 请求,也不需要它。

    参考链接是here。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-05
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多