Я пытаюсь вызвать остальную веб-службу в приложении iOS с помощью Restkit, но получаю следующую ошибку: restkit.network:RKObjectRequestOperation.m:210 response.body = 415 Unsupported Media Type

415 Неподдерживаемый тип носителя

objectManager.requestSerializationMIMEType = RKMIMETypeJSON;

И это мой запрос, показанный в консоли

request.headers={
    Accept = "application/json";
    "Accept-Language" = "en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5";
    Authorization = "Basic U1lTQURNSU46aHVsNTU4ODg1OA==";
    "Content-Type" = "application/json; charset=utf-8";
    "User-Agent" = "iosProj/1 (iPad Simulator; iOS 8.3; Scale/2.00)";
}

Затем я обнаружил, что проблема может быть вызвана "charset = utf-8", как упоминалось здесь. У меня вопрос, как удалить "charset = utf-8" в Restkit

0
Mane_87 11 Май 2016 в 18:35

2 ответа

Лучший ответ

Благодаря комментарию @Wain я решил проблему, создав запрос и установив заголовок типа контента:

NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];    
[request setHTTPBody:jsonData];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor
                                            responseDescriptorWithMapping: [LoginResponse getResponseMapping]
                                            method:RKRequestMethodPOST
                                            pathPattern:nil
                                            keyPath:@"OutputParameters"
                                            statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc]initWithRequest:request responseDescriptors:@[responseDescriptor]];
0
Mane_87 12 Май 2016 в 15:19

Я надеюсь, что это поможет кому-то. Это случилось недавно со мной, и мне тоже не хватало Content-Type. Однако вы можете легко добавить это в RKObjectManager как:

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:YOUR_BASE_URL]];
[manager setRequestSerializationMIMEType:RKMIMETypeJSON];
0
Mausam 23 Сен 2016 в 12:53