HarmonyOS鸿蒙Next中使用Jsoup的https请求页面问题not permitted

HarmonyOS鸿蒙Next中使用Jsoup的https请求页面问题not permitted java.io.IOException:cleartext Http traffic to www.iciba.com not permitted 在鸿蒙OS应用中怎么解决?

17 回复

发现一个问题,直接从IDE中拷贝的代码,复制到论坛有的无法显示出来。

更多关于HarmonyOS鸿蒙Next中使用Jsoup的https请求页面问题not permitted的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


"deviceConfig": {
    "default": {
        "network": {
            "usesClearText": true,
            "securityConfig": {
                "domainSettings": {
                    "cleartextPermitted": true,
                    "domains": [
                        {
                            "subDomains": true,
                            "name": "www.iciba.com"
                        }
                    ]
                }
            }
        }
    }
}

HarmonyOS的流畅动画和过渡效果让操作更加顺畅,体验极佳。

您好,你这个报错是因为没有配置usesCleartext导致的,我这边帮你配置了一下就OK了,可以看配置代码和运行效果如下图

like是本地词库的,work/word本地词库没有的,就是会出现下面错误,按你那个配置网络,问题还没有解决

这也太巧了,这也能碰到本地词库,我再看看

您好我在我本地又试了一下没有报错
![图片](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/234/279/200/0260086000234279200.20201203161145.53716630198645798469711842149415:50001231000000:2800:77D279A4343FE809113849B334FBAAB0F39CE588F1E81CD0C711B36E81E28425.png)
您好,我这边最后测试没有问题,因为我不知道你的代码是如何写的,现在把我的代码贴给你看一下,以及注意事项发出来

1. entry模块里的build.gradle增加Jsoup库,代码如下

2. 编写在JsoupAbilitySlice文件中编写Jsoup访问代码如下

3. 这里由于用到网络访问权限所以在entry模块下的config.json需要在reqPermissions节点下配置相应网络访问权限如下

如果上面的权限不配置则报如下错误

下面是访问没有报错并返回网站信息的结果

可以的话,麻烦将请求页面代码发一下,谢谢。

https://gitee.com/weimin20171202/HiEdict 这个是我的代码,直接使用jsoup源码

好的,我有空看一下,你也可以尝试看看我的方案

还是一样,网络访问异常

请问你的jsoup用的是哪个版本的,谢谢

jsoup-1.13.1

亲爱滴开发者 ,这个问题已经在处理中啦,稍后答复你哟 ,么么哒

在HarmonyOS鸿蒙Next中使用Jsoup进行HTTPS请求时,如果遇到“not permitted”问题,可能是由于系统默认的安全策略限制了某些网络操作。鸿蒙系统对网络请求有严格的安全控制,特别是在处理HTTPS请求时,可能会因为证书验证或协议版本不匹配而导致请求被拒绝。

要解决这个问题,可以尝试以下方法:

  1. 检查网络权限:确保在应用的config.json文件中已经正确配置了网络权限。例如:

    "reqPermissions": [
        {
            "name": "ohos.permission.INTERNET"
        }
    ]
  2. 使用自定义SSLContext:如果问题是由于证书验证引起的,可以尝试使用自定义的SSLContext来绕过证书验证。例如:

    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, new TrustManager[]{new X509TrustManager() {
        public void checkClientTrusted(X509Certificate[] chain, String authType) {}
        public void checkServerTrusted(X509Certificate[] chain, String authType) {}
        public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }
    }}, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
  3. 设置协议版本:确保使用的协议版本与服务器兼容。可以通过设置HttpsURLConnection的协议版本来解决:

    HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
    HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
  4. 检查Jsoup版本:确保使用的Jsoup版本与鸿蒙系统兼容。某些旧版本的Jsoup可能存在与鸿蒙系统不兼容的问题。

  5. 调试日志:启用详细的调试日志,查看具体的错误信息,以便更好地定位问题。

通过以上方法,可以解决在HarmonyOS鸿蒙Next中使用Jsoup进行HTTPS请求时遇到的“not permitted”问题。

在HarmonyOS鸿蒙Next中使用Jsoup进行HTTPS请求时,如果遇到“not permitted”问题,可能是由于网络权限未正确配置或SSL证书验证问题。首先,确保在config.json中已添加<uses-permission ohos:name="ohos.permission.INTERNET"/>权限。其次,如果目标网站使用自签名证书,可能需要禁用SSL验证,但这会降低安全性。建议使用Jsoup.connect(url).validateTLSCertificates(false)来绕过证书验证,但仅限测试环境使用。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!