Получить HTTPURLResponse от ответа Сиесты

Я борюсь против REST API, который выполняет перенаправление 304; мне нужно взять целевой URL перенаправления и открыть его с помощью браузера (я знаю, это немного извращение). Я успешно перехватил перенаправление, благодаря этому хорошему парню-реверспанде: https://github.com/bustoutsolutions/siesta/issues/210 но все же я не понял, как получить URL перенаправления в обратном вызове запроса GET (успех или неудача)

resource.load().onSuccess{ response in
        //HERE I WOULD LIKE TO TAKE THE URL OF THE REDIRECT 
        //(if I print the response I can see the HTML of the destination web page where the user should land)
    }.onFailure{ error in
        //using 'completionHandler(nil)' in the 'willPerformHTTPRedirection' method of the delegate, brings me here
    }

Любое предложение о том, как я мог решить эту проблему?

Спасибо!

1 ответ

Загляните в RequestChain.swift, там есть несколько комментариев с примером, которые могут помочь. Я считаю, что вы можете сделать что-то вроде:

func redirectRequest() -> Request {
  return self.yourAnotherRequest(onSuccess: {
    }, onFailure: { error in
  })
}

func yourRequest(request: Siesta.Request) -> Request {
  return request.chained {
    guard case .failure(let error) = $0.response,
        error.httpStatusCode == 401 else {
            return .useThisResponse
    }

    return .passTo(
        self.redirectRequest().chained {
            if case .failure = $0.response {
                return .useThisResponse
            } else {
                return .passTo(request.repeated())
            }
        }
    )
  }
}

Вы можете искать больше примеров с ключевыми словами chained, useThisResponse а также passTo в сиестских источниках.

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

Другие вопросы по тегам