我正在与执行304重定向的REST API作斗争;我需要的是获取重定向的目标URL并使用浏览器打开它(我知道,这有点像变态)。我成功拦截了重定向,这要归功于这个漂亮的小伙子反转: https://github.com/bustoutsolutions/siesta/issues/210 但我仍然没有弄清楚如何在GET请求的回调中获取重定向url(成功或失败)
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
}
有关如何解决此问题的任何建议吗?
谢谢!
答案 0 :(得分:0)
在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())
}
}
)
}
}
您可以在Siesta来源中用关键字chained
,useThisResponse
和passTo
搜索更多示例。
请告诉我们,这是否有助于解决您的问题,很高兴看到您的最终解决方案。