【发布时间】:2016-06-10 13:27:03
【问题描述】:
我将 Alamofire 与 rx 一起使用,但我遇到了一个问题,即如果调用成功(状态 200),则没有返回 JSON。这会触发我的错误代码。如果我得到状态 400,我会得到 JSON,所以调用很好。
如何指定响应为 JSON,但如果为空且状态码为 200,则不会出错?
谢谢!
func createUser(httpBody: AccountDetails!) -> Observable<(NSHTTPURLResponse, AnyObject)> {
return Alamofire.Manager.rx_request(.POST,
APIService.REGISTER_ENDPOINT,
parameters: httpBody.getParameters(),
encoding: .JSON,
headers: nil)
.flatMap {
$0
.validate(statusCode: 200..<501)
.validate(contentType: ["application/json"])
.rx_responseJSON()
.map { (response:NSHTTPURLResponse, object:AnyObject) -> (NSHTTPURLResponse, AnyObject) in
return (response, object)
}
}
}
编辑:
我通过将 .rx_responseJSON() 更改为 .rx_responseData() 并返回 NSData 而不是 AnyObject 作为第二个参数来解决此问题。现在调用成功,我手动将数据转换为 JSON。不确定这是否是正确的解决方案,但现在就足够了。很高兴听到更好的解决方案。 谢谢
【问题讨论】:
-
最好将修复作为答案并接受它作为答案:)