87 votes

NSURLRequest définissant l'en-tête HTTP

Je dois définir l'en-tête HTTP d'une requête. 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 qu'il contienne des données personnalisées ?

186voto

hipplar Points 3185

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"];

2 votes

Existe-t-il une API pour ajouter un dictionnaire d'en-têtes ?

11voto

Beslan Tularov Points 2667

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

6voto

Ram S Points 334
 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];

2 votes

Vous devriez probablement ajouter quelques explications pour le code que vous avez posté.

0 votes

Que signifie setValue:@"application/x-www-form-urlencoded", s'agit-il de quelque chose de personnalisé ?

0 votes

Dans le cas d'un support limité de la méthode POST dans le logiciel client HTTP où des données pures ne peuvent pas être soumises dans le corps du message HTTP, RESTfm est capable de traiter des données encodées dans les formats application/x-www-form-urlencoded ou multipart/form-data. Remarque : les formats application/x-www-form-urlencoded et multipart/form-data ne s'appliquent qu'à la méthode HTTP POST. Remarque 2 : ce format utilise le même schéma d'"encodage URL" que celui requis pour les paramètres de la chaîne de requête GET, comme décrit ici. Avantages Prise en charge d'une taille de données plus importante que ce qui est possible avec une chaîne de requête GET.

2voto

Umair Khalid Points 1209

Je sais qu'il est tard mais cela 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)

0voto

Binoy jose Points 413

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;

         }
     }];

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X