2016-05-11 1 views
0

J'essaie d'appeler un service Web de repos dans une application iOS à l'aide de Restkit, mais j'obtiens cette erreur: restkit.network:RKObjectRequestOperation.m:210 response.body = 415 Type de support non pris en charge 415 Support non supporté Tapez dans la réponse Restkit

415 Type de média non pris en charge

Je puted cette ligne dans mon code pour définir le type de contenu application/JSON:

objectManager.requestSerializationMIMEType = RKMIMETypeJSON; 

ce qui est ma demande présentée dans la console

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)"; 
} 

Ensuite, j'ai trouvé que le problème pourrait être causé par "charset = utf-8" comme mentionné here. Ma question est de savoir comment supprimer « charset = utf-8 » dans Restkit

+1

Je suppose que vous aurez besoin d'avoir RestKit créer le 'NSURLRequest' puis définissez le nouvel en-tête de type de contenu explicitement – Wain

+0

Merci @Wain, ça marche: NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL: url]; [request setValue: @ "application/json" pourHTTPHeaderField: @ "Content-Type"]; –

+0

ajouter cela comme une réponse et l'accepter :) – Wain

Répondre

0

Merci à @Wain commentaire que je résolu le problème en créant la demande et la mise en l'en-tête de type de contenu:

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

J'espère que cette aide quelqu'un. Cela m'est arrivé récemment et il me manquait aussi Content-Type. Cependant, vous pouvez facilement ajouter que RKObjectManager comme:

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:YOUR_BASE_URL]]; 
[manager setRequestSerializationMIMEType:RKMIMETypeJSON];