xcode ios simulator Время ожидания запроса истекло - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть приложение iOS 13.3, запущенное на симуляторе XCode iOS. Он связывается с простым python tcpserver на Raspberry PI, работающем в локальной сети. Код iOS основан на // https://dev.to/bsorrentino/develop-a-textfield-validator-for-swiftui-7d3, который использует URLSession. Через 10 секунд я получаю тайм-аут в коде iOS. Я проверил сетевые пакеты с помощью tcpdump на ма c. Похоже, правильные пакеты отправлены и получены. Используемый URL-адрес http://10.0.0.119: 60708 , поскольку сервер PI не обрабатывает https на данный момент. Сервер python получает JWT, добавляет имя потока и возвращает его обратно. Фрагмент python выглядит следующим образом:

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            data = self.request.recv(4096).decode('utf-8')
            if len(data) == 0:
                break
            cur_thread = threading.current_thread()
            response = "{}: {}".format(cur_thread.name, data)
            print(response)
            self.request.sendall(response.encode('utf-8'))

Ошибка:

2020-02-22 12: 11: 35.324596-0500 PIHome [64511: 66647174] Задача <2C1CE343- FB68-40CB-97C5-5E7967933838>. <2> завершена с ошибкой [-1001] Ошибка Domain = NSURLErrorDomain Code = -1001 "Время ожидания истекло." UserInfo = {NSUnderlyingError = 0x600001046ca0 {Домен ошибки = kCFErrorDomainCFNetwork Code = -1001 "(null)" UserInfo = {_ kCFStreamErrorCodeKey = -2102, _kCFStreamErrorDomainKey = 4}}, 10102 * 1010 = 170 * 1012F = 170 * 1012F * NSErrorFailingURLKey = http://10.0.0.119: 60708 / температура , _kCFStreamErrorDomainKey = 4, _kCFStreamErrorCodeKey = -2102, NSLocalizedDescription = Время ожидания запроса истекло.}

Значение tcpdump равно 10: *

Это просто проблема с https или что-то более глубокое?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

Это может быть связано с ATS, попробуйте установить следующие ключи в вашем приложении Info.plist

NSAppTransportSecurity : Dictionary {
    NSAllowsArbitraryLoads : Boolean               -> YES
    NSAllowsArbitraryLoadsForMedia : Boolean       -> YES
    NSAllowsArbitraryLoadsInWebContent : Boolean   -> YES
    NSAllowsLocalNetworking : Boolean              -> YES

Подробнее об официальном Предотвращение небезопасных сетевых подключений

0 голосов
/ 22 февраля 2020

Что-то не так с https. Попробуйте перекодировать систему https для вашей игры. Кстати, это очень сложно.

...