首页 > 解决方案 > 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 密切相关。

标签: androidpythonsslkivyaws-api-gateway

解决方案


确保您的 .spec 文件具有 Internet 权限。另外,如果您使用 python2,我相信您的要求中需要“hostpython2”。我不确定您在其中的任何要求是否依赖于 python 2 或 3,但如果您使用的是 python 2,请确保它们适用于 python 2。此外,我认为您的请求要求中不需要 [安全]。尝试只输入“请求”,您也可以尝试安装 sqlite 并将 g 添加到您的要求中。


推荐阅读