android - 通过使用域名 URL,服务器发送的事件在 android 中不起作用
问题描述
我正在使用来自 Ajax 的 URL “<a href="https://username:password@home.myopenhab.org/rest/events?topics=smarthome/" rel="noreferrer">https://username:password@ home.myopenhab.org/rest/events?topics=smarthome/" 使用 Cordova 从服务器获取客户端应用程序中的 SSE(服务器发送事件)。
- 它在 IOS 上运行良好,但在 android 上无法运行
- (我使用的是 android 7.0,最新的 chrome 版本,并且还在开发人员选项中启用了 webview 实现)。
- 对于相同的 URL,如果我提供像“ http://192.168.0.1/rest/events?topics=smarthome/ ”这样的 IP,它在 IOS 和 android 上都可以正常工作。
注意:两个 URL(“<a href="https://username:password@home.myopenhab.org/rest/events?topics=smarthome/" rel="noreferrer">https://username:password@home. myopenhab.org/rest/events?topics=smarthome/" AND " http://192.168.0.1/rest/events?topics=smarthome/ ”),使用“cordova-crosswalk-plugin”可以正常工作,但我不想使用 crosswalk 插件,因为要求从 google play 下载一些依赖应用程序。
var eventSource = new EventSource(" +“url”+ /rest/events?topics=smarthome/*");
eventSource.addEventListener(‘message’, function (eventPayload){
//not entering here.
}
解决方案
我在这里找到了答案,我会在这里说:
原因是您的网址使用https
您可以尝试删除onReceivedSslError
方法\cordova\platforms\android\CordovaLib\src\org\apache\cordova\ CordovaWebViewClient.java
然后加handler.proceed()
推荐阅读
- mysql - 无法识别产生错误消息的错误
- android - Manifest合并失败如何解决?
- mongodb - 多个请求同时,产生奇怪的结果
- mysql - SQL:如果不在表中则加入或仅选择一行
- typescript - 打字稿中的“扩展”实际上是什么意思?
- ios - 多平台 cocoapods 库配置
- java - 尽管 hashCode() 和 equals() 为真,但 HashMap containsKey() 返回假
- android - 如何使用 Intents 将 INT 值从活动 A 传递到活动 B
- node.js - ElasticSearch 有没有办法只显示聚合?
- javascript - 如何将mysql查询翻译为sequelize orm