如何从`MoyaError`获取错误statusCode?
我正在使用Moya
, Moya_ModelMapper
和RxSwift
来执行networking请求。 这是我的示例代码:
let provider = RxMoyaProvider<MyEndpoint>() let observable: Observable<RegistrationResponse> = provider.request(.register(firstName: "", lastName: "", email: "", password: "")).mapObject(type: RegistrationResponse.self) observable.subscribe { [weak self] (event: Event<RegistrationResponse>) in switch event { case .next(let response): print(response) case .error(let error): print(error) case .completed: break } }
一切工作正常,但我不知道如何得到一个错误代码,当我收到例如从服务器的409
状态码响应types。 如果我打印错误,我会得到:
jsonMapping(Status Code: 409, Data Length: 0)
但我不知道如何通过代码获取这个状态码。 错误是一个枚举types的MoyaError
。 这是MoyaError的源代码 。
谢谢!
从评论中迁移
Moya错误不直接包含错误代码,它们包含MoyaResponses,而后者又包含错误代码。
第一种情况的错误,如MoyaError
let moyaError: MoyaError? = error as? MoyaError
可选的MoyaError将包含一个可选的响应,使用可选的链接,我们得到:
let response : Response? = moyaError?.response
最后我们可以得到响应的状态码。
let statusCode : int? = response?.statusCode