Je dois définir l'en-tête HTTP pour une demande. Dans la documentation de la classe NSURLRequest, je n'ai rien trouvé concernant l'en-tête HTTP. Comment puis-je définir l'en-tête HTTP pour contenir des données personnalisées?NSURLRequest définissant l'en-tête HTTP
Répondre
Vous devez utiliser un NSMutableURLRequest
NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] initWithURL:url]
autorelease];
[request setValue:VALUE forHTTPHeaderField:@"Field You Want To Set"];
ou pour ajouter un en-tête:
[request addValue:VALUE forHTTPHeaderField:@"Field You Want To Set"];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"your value" forHTTPHeaderField:@"for key"];//change this according to your need.
[request setHTTPBody:postData];
Vous devriez probablement ajouter quelques explications pour le code que vous avez posté. – MasterAM
Que signifie setValue: @ "application/x-www-form-urlencoded" signifie, est-ce sth custom? –
En cas de prise en charge limitée de POST dans le logiciel client HTTP où les données pures ne peuvent pas être soumises dans le corps du message HTTP, RESTfm peut gérer les données codées dans l'une des applications/x-www-form-urlencoded ou multipart/form-data formats. Remarque: Les formats application/x-www-form-urlencoded et multipart/form-data s'appliquent uniquement à la méthode HTTP POST Remarque 2: ce format utilise le même schéma de "codage d'URL" que celui requis pour la chaîne de requête GET paramètres tels que décrits ici. Avantages Prise en charge d'une taille de données plus importante que ce qui est possible à l'aide d'une chaîne de requête GET. –
Vous pouvez ajouter de la valeur dans NSMutableURLRequest
pour champ_en-tête:
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setValue:VALUE forHTTPHeaderField:@"cookie"];
Cela fonctionne pour moi.
pour Swift
let url: NSURL = NSURL(string: APIBaseURL + "&login=1951&pass=1234")!
var params = ["login":"1951", "pass":"1234"]
request = NSMutableURLRequest(URL:url)
request.HTTPMethod = "POST"
var err: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
J'utilise le même type de code pour faire une demande, mais il retourne ** nil ** données. J'ai essayé de voir ce qui ne va pas et la seule chose que j'ai pu trouver était que la valeur de réponse revenant a une valeur différente pour "Content-Type" par opposition à ce que j'essaie d'ajouter au début du code. 'request.setValue (" Une certaine valeur ", forHTTPHeaderField:" Content-Type ")' est-ce que cela fonctionne pour vous? – Sashi
essayez cet en-tête request.addValue ("text/html", forHTTPHeaderField: "Content-Type") –
J'ai essayé cela aussi, mais cela n'a pas fonctionné. Enfin en utilisant myParameters.dataUsingEncoding travaillé pour moi, j'utilisais quelque chose d'autre c'est la raison pour laquelle je pense que ça ne fonctionnait pas. Merci pour l'aide. – Sashi
Exemple de code
- (void)reqUserBalance:(NSString*)reward_scheme_id id:(NSString*)user_id success:(void (^)(id responseObject))success failure:(void (^)(id responseObject))failure{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@reward/%@/user/%@/balance",URL_SERVER,reward_scheme_id,user_id]];
NSLog(@"%@",url);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"true" forHTTPHeaderField:@"Bypass"];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError)
{
options:kNilOptions error:NULL];
if (data.length > 0 && connectionError == nil)
{
NSDictionary * userPoints = [NSJSONSerialization JSONObjectWithData:data
options:0
error:NULL];
NSString * points = [[userPoints objectForKey:@"points"] stringValue];
NSLog(@"%@",points);
[SecuritySetting sharedInstance].usearAvailablePoints = points;
}
}];
}
Je sais que tard, mais peut aider les autres, pour SWIFT 3,0
let url = NSURL(string: "http://www.yourwebsite.com")
let mutAbleRequest = NSMutableURLRequest(URL: url!)
mutAbleRequest.setValue("YOUR_HEADER_VALUE", forHTTPHeaderField:"YOUR_HEADER_NAME")
myWebView.loadRequest(mutAbleRequest)
- 1. Ajouter l'en-tête HTTP à NSURLRequest
- 2. QT http définissant un agent utilisateur
- 3. problème NSURLRequest
- 4. Recevoir des en-têtes HTTP via NSURLRequest/NSURLConnection dans Cocoa
- 5. Question sémantique concernant les cookies NSURLRequest et HTTP
- 6. avec NSURLRequest
- 7. NSURLRequest: EXC_BAD_ACCESS
- 8. NSURLRequest autorelease?
- 9. question Haskell Débutant (définissant des paires, similaire à états HTTP)
- 10. NSURLRequest et target-action
- 11. NSURLRequest ne fonctionne pas
- 12. NSURLRequest hanging SpringBoard
- 13. Impossible d'utiliser Xcode NSURLRequest
- 14. NSURLRequest HTTPS problems - iphone
- 15. NSURLRequest/NSURLConnection pour tcp
- 16. Échapper les caractères dans NSURLRequest
- 17. Bug dans NSURLRequest ou AFNetworking?
- 18. passer un NSArray à NSURLRequest
- 19. paramètre extrait de UIWebView NSURLRequest
- 20. NSURLRequest return null
- 21. NSURLRequest timeOut handling
- 22. Proxies avec NSURLRequest
- 23. NSURLConnection/NSURLRequest support gzip
- 24. NSURLRequest -> NSURLConnection
- 25. NSURLRequest Cache Policy
- 26. commande cURL pour NSURLRequest
- 27. NSUrlREquest ajout d'en-tête personnalisé
- 28. Fonctions définissant Javascript
- 29. NSURLRequest - encoder l'URL pour le corps POST NSURLRequest (iPhone-objectif C)
- 30. Erreur de délai pour NSUrlRequest
Juste ce que je cherchais !! Bravo à toi !! –
Y a-t-il une API pour ajouter un dictionnaire d'en-têtes? –
Excellente réponse! Je voulais souligner que RamS [réponse] (http://stackoverflow.com/a/20760445/1778488) a une belle documentation. – fskirschbaum