Я только начал пробовать RestKit для приложения для iOS, которое я создаю. Я обычно использую ASIHttpRequest, но я хочу протестировать RestKit в основном для его сопоставления объектов между JSON и CoreData. Есть кое-что замечательное в RestKit, но я столкнулся с проблемой, которая действительно заставляет его чувствовать себя неполноценным, если я не делаю что-то неправильно или что-то упустил. Я надеюсь, что кто-то здесь может помочь мне в этом.
Я использую RKObjectLoader для асинхронных и синхронизирующих вызовов REST API. Мой сервис предназначен для отправки правильных кодов состояния HTTP вместе с неким описанием, 401 является примером того, когда API требуется аутентифицированный пользователь.
Моя проблема в том, что RestKit перестает работать нормально, если я получаю обратно ошибку 401. Объект RKResponse имеет код состояния 0, хотя в нем есть полезная нагрузка. Я почти уверен, что это связано с плохой обработкой HTTP-статусов NSURLConnection, но я ожидаю, что RestKit каким-то образом обойдет это. Тем более, что класс RKResponse имеет довольно много функций-оболочек для определения кода состояния ответа (isOK, isCreated, isForbidden, isUnauthorized и т. Д.).
Для сравнения, ASIHttpRequest не использует NSURLConnection, но вместо этого использует код CFNetwork более низкого уровня. ASIHttpRequest позволяет мне точно видеть, что вернулось через HTTP, без отправки ошибок влево и вправо.
Вопрос в том, что я делаю что-то не так, или это ожидаемое поведение из RestKit? Кто-нибудь успешно смог позвонить в [RKResponse isAuthenticated]? Хотя для меня это и не доказывает, есть ли какая-то разница между работой в асинхронном режиме и в режиме синхронизации в этом отношении. Я где-то читал, что NSURLConnection, запущенный в режиме синхронизации, будет действовать немного по-другому, даже если базовый код просто вызывает асинхронные операции. Связано ли это с тем, что я использую RKObjectLoader, а не просто RKRequest? Возможно, тот факт, что полезная нагрузка не может быть сопоставлена с моделью, вызывает гнев, но кажется, что код нарушается раньше в RKRequest.sendSynchronously, до того, как на самом деле происходит сопоставление.
Суть в том, что мой код должен иметь возможность свободно читать коды состояния HTTP. Любое руководство будет наиболее ценно.
Хайдер