从 Moya 响应中获取响应
Posted
技术标签:
【中文标题】从 Moya 响应中获取响应【英文标题】:Get response from Moya Response 【发布时间】:2017-01-03 10:10:19 【问题描述】:我正在使用 RxSwift 和 Moya 来调用请求并获得响应。
我的代码:
NetworkManager.shared.request(api: .carrot2diamond, showLoading: false).subscribe( (response) in
// how to handle with response
).addDisposableTo(self.disposeBag)
显示如下:
["Moya_Logger: [03/01/2017 16:52:50] 请求: http://api.360live.vn/api_shop/carrot2diamond?appversion=1.0&auth_key=f4aeaa8f9df1fd8ef68e1f3e431cd77995d565ef66e7dff9&devid=EA51920A-5C21-41D8-A420-62AF6AAD20FD&platform=2"] [“Moya_Logger:[03/01/2017 16:52:50] 请求标头:[:]”] [“Moya_Logger:[03/01/2017 16:52:50] HTTP 请求方法:GET”] [“Moya_Logger:[03/01/2017 16:52:50] 响应: URL: http://api.360live.vn/api_shop/carrot2diamond?appversion=1.0&auth_key=f4aeaa8f9df1fd8ef68e1f3e431cd77995d565ef66e7dff9&devid=EA51920A-5C21-41D8-A420-62AF6AAD20FD&platform=2 状态码:200,标头 \n \"Access-Control-Allow-Origin\" = \"*\";\n \"内容长度\" = 53;\n \"内容类型\" = \"application/json; charset=utf-8\";\n 日期 = \"2017 年 1 月 3 日,星期二 格林威治标准时间 09:52:50\";\n 服务器 = \"Jetty(9.2.z-SNAPSHOT)\";\n \"X-Server\" = 360Live;\n "] ["\"error\":0,\"message\":\"exchange 胡萝卜值无效\""]
我想从这一行检测错误:
["\"error\":0,\"message\":\"交换胡萝卜值无效\""]
当我发送response.element?.response?.description
时,它只会给我:
▿ 可选 - 一些:“ URL:http://api.360live.vn/api_shop/carrot2diamond?appversion=1.0&auth_key=f4aeaa8f9df1fd8ef68e1f3e431cd77995d565ef66e7dff9&devid=EA51920A-5C21-41D8-A420-62AF6AAD20FD&platform=2 状态码:200,标头 \n \"Access-Control-Allow-Origin\" = \"*\";\n \"内容长度\" = 53;\n \"内容类型\" = \"application/json; charset=utf-8\";\n 日期 = \"2017 年 1 月 3 日,星期二 格林威治标准时间 09:52:50\";\n 服务器 = \"Jetty(9.2.z-SNAPSHOT)\";\n \"X-Server\" = 360Live;\n "
【问题讨论】:
你说的response
是Event<Response>
【参考方案1】:
我刚刚通过在调用request
后添加mapJSON()
解决了这个问题。
mapJSON()
的声明是
func mapJSON(failsOnEmptyData: Bool = default) -> Observable<Any>
它的描述是:
Maps data received from the signal into a JSON object. If the conversion fails, the signal errors.
我的代码:
NetworkManager.shared.request(api: .carrot2diamond, showLoading: false).mapJSON().subscribe( (response) in
if let element = response.element, let dic = element as? [String: AnyObject], let message = dic["message"] as? String
print(message) // ->>>> exchange carrot value invalid
).addDisposableTo(self.disposeBag)
【讨论】:
以上是关于从 Moya 响应中获取响应的主要内容,如果未能解决你的问题,请参考以下文章