UrlRequest висит на GET - PullRequest
       4

UrlRequest висит на GET

0 голосов
/ 07 ноября 2019

Я пытаюсь запустить UrlRequest, и Киви, похоже, не хочет возвращаться. Он зависает, пока я не заставлю выйти из приложения. Я могу выполнить тот же запрос через 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 Ответ

1 голос
/ 07 ноября 2019

Kivy's UrlRequest по умолчанию имеет резьбу. Это означает, что вам нужно указать функции обратного вызова для успешного завершения запросов. Он работает в фоновом режиме, поэтому он не блокирует ничего, что делает ваше приложение, поэтому вы должны указать функцию обратного вызова в вызове UrlRequest, чтобы он знал, что делать, когда это будет сделано. Сделайте это, передав имя вашей функции обратного вызова параметру on_success в вашем UrlRequest. Аналогично, вы можете указать функции обратного вызова для on_error и on_failure.

Пример:

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

Затем в вашем коде:

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

(Выне нужно присваивать переменную UrlRequest, как вы делали).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...