gpt4 book ai didi

ios - 使用 Moya 获取响应头

转载 作者:行者123 更新时间:2023-11-28 10:55:48 24 4
gpt4 key购买 nike

我在我的 swift 应用程序中使用 Moya 进行网络请求。

我能够使用 Moya- Object Mapper 获取请求并映射结果。

我之前用过alamofire,熟悉发帖、获取请求、读取响应头的方法。

但是,我似乎无法理解如何在 Moya 中做同样的事情。

我确实浏览了文档,但它没有说明有关阅读响应 header 的任何内容。

是否有任何示例或教程可以让我了解如何进行 HTTP 身份验证和阅读响应 header 。以及如何发出发布请求并将参数作为字段参数或 json 正文发送。

我已经完成了 Moya 示例。

任何帮助将不胜感激。谢谢。

最佳答案

Moya 中的响应头目前实际上相当困难。这是 Moya 代码中不需要的旧的沮丧。我永远不知道他们为什么不看好它。

我开了一个相关的issue来指出:Moya header

并通过拉取请求进行一些更改:Moya header PR

这是我的个人代码示例,我在其中强制转换响应以访问 header :

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

您可以在收到响应(这是一个 Moya.Response)时在您使用的 map/mapObject/mapArray 中强制转换它

我建议您关注我提出的问题,以了解它何时会在包含此重大更改的下一个版本中实现

奖励:如果你在你的项目中使用 SwiftLint,你可以使用 guard/let

guard let resp = response.response as? HTTPURLResponse

关于ios - 使用 Moya 获取响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43752351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com