You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView加载HTTP而非HTTPS网页问题求助

Android WebView加载HTTP网站的问题解决

要在Android WebView里正常加载HTTP网站,需要解决Android系统对明文流量的限制,同时配置好WebView的相关参数,具体步骤如下:

1. 添加网络安全配置

Android 9(API 28)及以上版本默认阻止明文HTTP流量,需要创建网络安全配置文件来允许明文访问:

在res/xml目录下新建network_security_config.xml文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

如果只想允许特定域名的HTTP访问,可以改成:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">weburl.com</domain>
    </domain-config>
</network-security-config>

接着在AndroidManifest.xml的application标签中引用这个配置:

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

2. 完善WebView配置

你的现有代码已做部分配置,这里补充优化后的完整代码:

package com.example.chatgpt;
import android.os.Bundle;
import android.webkit.SslErrorHandler;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.net.http.SslError;
import android.os.Build;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.webView);
        WebSettings webSettings = webView.getSettings();
        
        // 禁用缓存,确保加载最新内容
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        // 设置自定义User-Agent
        String userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";
        webSettings.setUserAgentString(userAgent);
        // 启用JavaScript(根据网页需求调整)
        webSettings.setJavaScriptEnabled(true);
        
        // Android 5.0+允许混合内容加载(适配网页中HTTPS资源混编的情况)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }

        // 处理SSL错误(仅当网站跳转HTTPS出现证书问题时使用,谨慎开启)
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();
            }
        });

        // 加载目标HTTP网站
        webView.loadUrl("http://weburl.com/");
    }

    // 处理WebView返回导航逻辑
    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

3. 检查权限配置

确保AndroidManifest.xml中添加了网络访问权限:

<uses-permission android:name="android.permission.INTERNET" />

注意:handler.proceed()会忽略所有SSL错误,存在安全风险,如果网站有合法的SSL证书,建议移除该逻辑,让用户确认或修复证书问题。

内容的提问来源于stack exchange,提问作者HelloCH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:43:20