Короче: я пытаюсь извлечь данные с сервера с content-type
заголовка запроса HTTP установлен в @"text/html
.. но по какой-то причине RestKit изменения, которые в application/JSON
Почему RestKit меняет свой контент-ответ?
Объяснение: Если бы я сделать это запрос, используя только AFNetworking .. все работает как шарм .. это то, что мой AFNetworking код выглядит следующим образом:
AFHTTPClient *client = [AFHTTPClient alloc] initWithBaseURL:
[NSURL URLWithString:kApiBaseUrl]];
singleton.parameterEncoding = AFJSONParameterEncoding;
[singleton setDefaultHeader:@"Accept" value:@"text/html"];
[client getPath:getPath parameters:nil success:successCallback failure:failureCallback];
Если я использую это точно такой же клиент и прикрепить его к
MyClient *client = [MyClient getSingleton]; //MyClient is instantiated as above
self.objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
self.objectManager.managedObjectStore = self.managedObjectStore;
// this should have already been done by my client, but putting
// it here just to be sure
[self.objectManager setAcceptHeaderWithMIMEType:@"text/html"];
[[RKObjectManager sharedManager] getObjectsAtPath:kGradesPath
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
// handle success
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
// handle failure
}];
ошибка я получаю:
restkit.network:RKObjectRequestOperation.m:576 Object request failed:
Underlying HTTP request operation failed with error: Error
Domain=org.restkit.RestKit.ErrorDomain Code=-1016 "Expected content type {(
"application/x-www-form-urlencoded",
"application/json"
)}, got text/html" UserInfo=0x8f7acd0
углубиться в тему .. я ставлю точку останова в managedObjectRequestOperationWithRequest, то я проверил acceptableContentTypes из HTTPRequestOperation
создал, и это ноль! Поэтому я предполагаю, что RestKit просто устанавливает свои собственные допустимые типы контента по умолчанию. Я просто не знаю, где и как его предотвратить. идеи?
p.s. я не имею контроль над сервером, поэтому я не могу изменить его content-type
заголовок application/JSON
Update:
Оказывается, что в RKObjectRequestOperation.m он получает mime-type
от [RKMIMETypeSerialization registeredMIMETypes];
(линия 354) .. и поэтому в RKMIMETypeSerialization.h есть метод:
/**
Registers the given serialization class to handle content for the given MIME Type identifier.
MIME Types may be given as either a string or as a regular expression that matches the MIME Types for which the given serialization should handle. Serializations are searched in the reverse order of their registration. If a registration is made for an already registered MIME Type, the new registration will take precedence.
@param serializationClass The class conforming to the RKSerialization protocol to be registered as handling the given MIME Type.
@param MIMETypeStringOrRegularExpression A string or regular expression specifying the MIME Type(s) that given serialization implementation is to be registered as handling.
*/
+ (void)registerClass:(Class<RKSerialization>)serializationClass forMIMEType:(id)MIMETypeStringOrRegularExpression;
как я использую это зарегистри ter a text/html
content-type?
могли быть некоторыми [побочными эффекты] (HTTP: //stackoverflow.com/questions/19607672/restkit-property-mapping-quesiton) к вышеуказанному? – abbood
Не помогло в моем случае, у меня возникла новая ошибка: «Загрузили необработанный ответ (200) с типом контента« text/html »« –
@VasyaVasyaa Я видел это раньше, и это обычно связано с настройкой моего ответа дескрипторы и коды успеха. –