UrlRequest挂在GET上

时间:2019-11-07 01:28:33

标签: python macos kivy

我正在尝试运行UrlRequest,而Kivy似乎不想返回。它会挂起,直到我强制退出该应用程序为止。我可以通过Rested运行相同的查询,并且可以验证URL /标题是否正确。

我是Mac OS的新用户,它是否已被防火墙阻止?我可以检查任何日志吗?

代码

server_headers = {'Authorization': 'Bearer ' + str(self.hass_server_token), 'content-type': 'application/json'}                
request = UrlRequest(str(self.hass_server_url) + ':' + str(self.hass_server_port) + '/api/states', req_headers= server_headers, verify=False)
while not request.is_finished:
    Clock.tick()
self.hass_all_states = request.result

谢谢

1 个答案:

答案 0 :(得分:1)

Kivy的UrlRequest在默认情况下是穿线的。这意味着您需要为请求成功完成时指定一个回调函数。它在后台运行,因此它不会阻止您的应用程序正在执行的其他任何操作,这就是为什么您必须在UrlRequest调用中指定回调函数的原因,因此它知道完成后该怎么做。为此,请将回调函数的名称传递给on_success中的UrlRequest参数。类似地,您可以为on_erroron_failure指定回调函数。

示例:

def success_callback(self, *args):
    print(args)

随后在您的代码中:

UrlRequest('some_server_url', on_success=self.success_callback)

(您不需要像以前那样向UrlRequest分配变量)。