У меня есть приложение для iOS, использующее Restkit. Большинство тел ответов с сервера имеют формат XML. Однако есть несколько API, которые отправляют ответ типа «Успех» только в текстовом / простом формате. При вызове этих API я получаю ответ 200, но restkit выдаст ошибку сопоставления, потому что ожидает Content-Type = application/xml
, как показано в ошибке ниже.
NSLocalizedDescription=Loaded an unprocessable response (200) with content type 'application/xml'} response.body=success
Я использую класс RKXMLReaderSerialization
для интерпретации XML, полученного от сервера, и именно так я его регистрирую.
[RKMIMETypeSerialization registerClass:[RKXMLReaderSerialization class] forMIMEType:@"application/xml"];
Судя по документации, вы можете зарегистрировать несколько типов MIMETypes, но я не смог понять, как это сделать. Если это возможно, кто-нибудь может указать мне на это. Если нет, есть ли способ справиться с этим?
ОБНОВЛЕНИЕ / РЕШЕНИЕ
После дальнейших исследований и помощи от Wain я обнаружил, что указанная выше ошибка фактически указывает на то, что response-header
для content-type
имеет значение application/xml
. Этот ресткит с ключами пытается сопоставить response.body
как application/xml
отформатированное тело. С response.body
, содержащим только слово «успех», ответ не удалось обработать. В итоге я указал на это своему серверу, и он исправил ответ, чтобы он был отформатирован в MIMEType, объявленном заголовком Accept
, отправленным с запросом.