RX Alamofire Swift 空响应 JSON
RX Alamofire Swift empty response JSON
我正在将 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 {
[=12=]
.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。不确定这是否是正确的解决方案,但现在就足够了。很高兴听到更好的解决方案。
谢谢
我通过将 .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 {
[=10=]
.validate(statusCode: [200,400,500])
.validate(contentType: ["application/json"])
.rx_responseData()
.map { (response:NSHTTPURLResponse, object:NSData) -> (NSHTTPURLResponse, NSData) in
return (response, object)
}
}
}
我正在将 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 {
[=12=]
.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。不确定这是否是正确的解决方案,但现在就足够了。很高兴听到更好的解决方案。 谢谢
我通过将 .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 {
[=10=]
.validate(statusCode: [200,400,500])
.validate(contentType: ["application/json"])
.rx_responseData()
.map { (response:NSHTTPURLResponse, object:NSData) -> (NSHTTPURLResponse, NSData) in
return (response, object)
}
}
}