Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Kivy URL请求与https_Python 3.x_Https_Kivy_Urlrequest - Fatal编程技术网

Python 3.x Kivy URL请求与https

Python 3.x Kivy URL请求与https,python-3.x,https,kivy,urlrequest,Python 3.x,Https,Kivy,Urlrequest,我正在尝试获取Python3.7Kivy代码,以使用UrlRequest检索https web数据。代码可以很好地使用http,但是当我将url更改为任何https时,都不会得到任何数据。当我同时使用http或https编译和运行时,这两种方式都不会出错。是否需要添加导入以使https正常工作?这是测试代码。谢谢 from kivy.app import App from kivy.uix.button import Button from kivy.uix.gridlayout import

我正在尝试获取Python3.7Kivy代码,以使用UrlRequest检索https web数据。代码可以很好地使用http,但是当我将url更改为任何https时,都不会得到任何数据。当我同时使用http或https编译和运行时,这两种方式都不会出错。是否需要添加导入以使https正常工作?这是测试代码。谢谢

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout

from kivy.network.urlrequest import UrlRequest
from functools import partial

class MainApp(App):
    def build(self):
        grid = GridLayout(cols=1)
        button1 = Button(text="Press to say Hello", 
        on_release=self.run_Hello)
        button2 = Button(text="Kivy UrlRequest", 
        on_release=self.run_UrlRequests)
        blank_button = Button(text="Click me!")
        grid.add_widget(button1)
        grid.add_widget(button2)
        grid.add_widget(blank_button)
        return grid

def run_Hello(self, *args):
    print("Hello")


def run_UrlRequests(self, *args):
    for i in range(10):
        self.r = UrlRequest("https://www.google.com", verify=False, 
    on_success=partial(self.update_label, i), 
    on_error=partial(self.error_label, i))

def update_label(self, i, *args):
    print(i)
    print("success")
    print(self.r.result)

def error_label(self, i, *args):
    print("failed")
    print(i)
    print(self.r.result)
MainApp().run()


我在UrlRequest之后添加了verify=False,也添加到了原始代码中。代码运行并生成html数据的打印语句。虽然这解决了https问题,但我不知道这个明显的SSL问题是否得到了正确的解决

向我们展示您迄今为止所做的工作。我最近从Python2切换到Python3,并遇到了类似的错误。对我来说,根本的问题是UrlRequest不知道属性CA文件在哪里。为了解决这个问题,我导入了certifi模块
import certifi
,然后传递了
ca\u file=certifi.where()
。正常的
请求.get
使用的是https,但不是Kivy的
UrlRequest
,不知道确切原因。使用
verify=False
有点安全风险。这就解决了问题。找不到它的任何文档。非常感谢。顺便说一句:喜欢你的Kivy视频。我也不能,我花了很长时间才弄明白。也许我会专门为它做一个教程或帖子哈哈!谢谢你的支持!!
def run_UrlRequests(self, *args):
    for i in range(10):
    self.r = UrlRequest("https://www.google.com", verify=False, 
    on_success=partial(self.update_label, i), on_error=partial(self.error_label, i))