Moya的響應頭現在其實很難。這是莫亞代碼中一種不需要的舊式沮喪。我永遠不知道他們爲什麼貶低它。
我開了一個相關的問題指出來:Moya header
,並做一些改變得益於拉請求:Moya header PR
這是我forcecast應對可以訪問我的個人代碼的例子到標題:
class GetTokenRequest {
private let requestService = AuthorizedRequest()
func request() -> Observable<AuthorizedResult<GetTokenEntityResult>> {
return Observable.deferred { [weak self] in
guard let wself = self else {
return Observable.empty()
}
let req = wself.requestService.makeRawRequest { userId in
let obj = GetTokenEntity(lang: currentLanguage(), userId: userId)
return MtxAPI.getToken(obj)
}
.shareReplay(1)
return req.map { result in
switch result {
case .success(let response):
let urlResponse = response.response as! HTTPURLResponse
guard let token = urlResponse.allHeaderFields["Token"] as? String else {
return AuthorizedResult.fail(RequestError.technical)
}
return AuthorizedResult.success(GetTokenEntityResult(token: token))
case .fail(let error): return AuthorizedResult.fail(error)
}
}
}
}
}
我使用RxSwift但主線是:
let urlResponse = response.response as! HTTPURLResponse
你可以在你的地圖forcecast它/ MapObject的/ mapArray當你得到的迴應你使用(這是一個Moya.Response
)
我建議你跟着我做的問題,要知道什麼時候會實現下一個版本將包含此breaking change
獎勵:如果你在項目中使用SwiftLint,您可以用guard/let
guard let resp = response.response as? HTTPURLResponse
投它,謝謝!我可以在添加後獲得響應標頭,讓urlResponse = response.response爲! HTTPURLResponse –