Swift RX Alamofire快速空响应JSON
我将Alamofire与rx一起使用,我有一个问题,即如果调用成功(状态200),则不会返回JSON。这会触发我的错误代码。如果我的状态是400,我就会得到JSON,所以调用就可以了 如何指定响应为JSON,但如果为空且状态代码为200,则不指定为error 谢谢Swift RX Alamofire快速空响应JSON,swift,alamofire,rx-swift,Swift,Alamofire,Rx Swift,我将Alamofire与rx一起使用,我有一个问题,即如果调用成功(状态200),则不会返回JSON。这会触发我的错误代码。如果我的状态是400,我就会得到JSON,所以调用就可以了 如何指定响应为JSON,但如果为空且状态代码为200,则不指定为error 谢谢 func createUser(httpBody: AccountDetails!) -> Observable<(NSHTTPURLResponse, AnyObject)> { return Alamo
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)
}
}
}
func-createUser(httpBody:AccountDetails!)->可观察{
返回Alamofire.Manager.rx_请求(.POST,
APIService.REGISTER\u端点,
参数:httpBody.getParameters(),
编码:.JSON,
标题:无)
.平面图{
$0
.validate(状态代码:200..(NSHTTPURLResponse,AnyObject)在
返回(响应、对象)
}
}
}
编辑:
我通过将.rx_responseJSON()更改为.rx_responseData()并返回NSData(而不是AnyObject)作为第二个参数来修复此问题。现在调用成功,我手动将数据转换为JSON。不确定这是否是正确的解决方案,但现在已经足够了。不过,很高兴听到更好的解决方案。
感谢我通过将.rx_responseJSON()更改为.rx_responseData()并返回NSData而不是AnyObject作为第二个参数来修复此问题。现在调用成功,我手动将数据转换为JSON。不确定这是否是正确的解决方案,但现在就足够了。很高兴听到更好的解决方案。谢谢
func createUser(httpBody: AccountDetails!) -> Observable<(NSHTTPURLResponse, NSData)> {
return APIManager.sharedManager.rx_request(.POST,
APIService.REGISTER_ENDPOINT,
parameters: httpBody.getParameters(),
encoding: .JSON,
headers: nil)
.flatMap {
$0
.validate(statusCode: [200,400,500])
.validate(contentType: ["application/json"])
.rx_responseData()
.map { (response:NSHTTPURLResponse, object:NSData) -> (NSHTTPURLResponse, NSData) in
return (response, object)
}
}
}
func-createUser(httpBody:AccountDetails!)->可观察{
返回apimager.sharedManager.rx_请求(.POST,
APIService.REGISTER\u端点,
参数:httpBody.getParameters(),
编码:.JSON,
标题:无)
.平面图{
$0
.验证(状态代码:[200400500])
.validate(contentType:[“application/json”])
.rx_responseData()
.map{(响应:NSHTTPURLResponse,对象:NSData)->(NSHTTPURLResponse,NSData)位于
返回(响应、对象)
}
}
}
最好将修复作为答案,并接受它作为答案:)sharedManager到底是什么?它的Alamofire.Manager.sharedInstance(我只是用APIManager类扩展了它)