Estou tendo um problema ao usar uma sessão de URL em segundo plano e a minha willPerformHTTPRedirection
não é chamada:
private class BackgroundCachingDelegate: NSObject, URLSessionDelegate, URLSessionTaskDelegate, URLSessionDownloadDelegate
{
func urlSession(_ session: URLSession, task: URLSessionTask, willPerformHTTPRedirection response: HTTPURLResponse, newRequest request: URLRequest) async -> URLRequest?
{
//... Never gets called
}
}
Eu chamo assim:
private func createNewBackgroundSession()
{
let backgroundCachingConfiguration = URLSessionConfiguration.background(withIdentifier: OfflineCacheService.entityBackgroundSessionIdentifier)
backgroundCachingConfiguration.requestCachePolicy = .reloadIgnoringLocalCacheData
let backgroundCachingDelegate = BackgroundCachingDelegate(/*params*/)
self.backgroundCachingSession = URLSession(configuration: backgroundCachingConfiguration, delegate: backgroundCachingDelegate, delegateQueue: nil)
}
private func startRequest(url: URL)
{
if self.backgroundCachingSession == nil
{
self.createNewBackgroundSession()
}
var request = self.uiViewController.getURLRequest(method: "GET", url: url)
request.cachePolicy = .reloadIgnoringCacheData
self.backgroundCachingSession!.downloadTask(with: request).resume()
}
O código funciona se eu pegar o URL redirecionado diretamente e tentar usá-lo.
Também tenho certeza de que o servidor está executando um redirecionamento:
Alguma ideia?
Atualizar
Talvez também para mencionar que recebo uma resposta de 0 bytes com o URL redirecionado como URL de resposta. Eu poderia ter um caso extremo com base no acima e chamar o novo URL redirecionado, mas preferiria a abordagem correta, se não for essa.