Я использую 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. Не уверен, что это правильное решение, но пока этого достаточно. Однако рад слышать лучшие решения. Спасибо