android - Kivy 中的 HTTPS 请求
问题描述
我一直在努力处理与通过 AWS API Gateway 托管的 API 相关联的 Kivy 应用程序中的 HTTPS 请求。首先,我从 Python3 转到 2,然后从 requests 库转到 kivy 的 URLRequest。
该应用程序在我的 linux 桌面上运行良好。当我使用请求库发出 API 请求时,出现 SSL 错误:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
我转而使用 URLRequest,它似乎与请求具有相同的 SSL 错误。传递给 URLRequest 错误回调的参数是: (, SSLError(1, '_ssl.c:503: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure'))
我发现了这个 stackoverflow 问题:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure [Kivy]
这意味着这与过时的 python 版本有关。
只是 Kivy android 应用程序无法与 AWS API 网关通信吗?
Buildozer .spec 行:requirements = hostpython2、kivy、future、python-dateutil、openssl、pyopenssl、jmespath、botocore、boto3、requests
android.permissions = 互联网
更新:我使用 URL https://kivy.org/logos/kivy-logo-black-64.png测试了一个 HTTPS GET 请求。这在 Android 应用程序中成功完成。这个问题似乎特定于 AWS API Gateway 使用的 SSL 版本
UPDATE2:Android 上的 Kivy 也适用于 Google Cloud Platform 的云功能 HTTPS 端点。更多证据表明此问题与 AWS API Gateway 密切相关。
解决方案
确保您的 .spec 文件具有 Internet 权限。另外,如果您使用 python2,我相信您的要求中需要“hostpython2”。我不确定您在其中的任何要求是否依赖于 python 2 或 3,但如果您使用的是 python 2,请确保它们适用于 python 2。此外,我认为您的请求要求中不需要 [安全]。尝试只输入“请求”,您也可以尝试安装 sqlite 并将 g 添加到您的要求中。
推荐阅读
- javascript - 如何防止在 React 中使用纯子级重新渲染纯组件?
- python - 我需要用泡菜来保存字典
- java - Spring Data 中的 Pageable + @Query + JOIN (fetch?) 不起作用
- python - 定制词汇的一种热编码
- python - Python:如何在不耗尽内存的情况下提取 Google Cloud Storage 中的 Zip 文件?
- reactjs - React Suspense 没有按预期工作
- node.js - 将远程文件传递到 Node.js 应用程序中的 libreoffice-convert 库时收到“错误:没有这样的文件或目录,打开”
- autodesk-forge - 无法获取 /api/forge/oauth/callback
- python - 使用 pd.read_html 复制表
- python - POST 方法不适用于 Flask 应用程序 - 错误 404