Как передать HTTP в качестве заголовка с помощью NSURLSession

#objective-c #nsurl #nsurlsession

#objective-c #nsurl #nsurlsession

Вопрос:

Я пытаюсь отправить запрос GET из веб-службы и хочу передать аргумент JSON в качестве параметра в заголовке HTTP. У меня есть следующий код, который выполняет запрос get без аргумента JSON. Как мне добавить аргумент JSON в тело HTTP для передачи параметра JSON?

Вот мой код, который работает без аргумента JSON:

 -(void) getReposByDate:(void (^)(NSMutableArray *))handler
{
    //Get credentials
    NSDictionary *credentials = [KeychainUserPass load:@"APP NAME"];

    NSString *userName = [credentials allKeys][0];
    NSString *password = credentials[userName];

    //Create request
    NSString *requestString = @"SOME WEB SERVICE URL";
    NSURL *url = [NSURL URLWithString:requestString];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];

    NSData *userPasswordData = [[NSString stringWithFormat:@"%@:%@", userName, password] dataUsingEncoding:NSUTF8StringEncoding];
    NSString *base64EncodedCredential = [userPasswordData base64EncodedStringWithOptions:0];
    NSString *authString = [NSString stringWithFormat:@"Basic %@", base64EncodedCredential];

    NSURLSessionConfiguration *sessionConfig=[NSURLSessionConfiguration defaultSessionConfiguration];
    sessionConfig.HTTPAdditionalHeaders=@{@"Authorization":authString};

    self.session=[NSURLSession sessionWithConfiguration:sessionConfig];

    NSURLSessionDataTask *dataTask = [self.session dataTaskWithRequest:req completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSMutableDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

        NSLog(@"%@", jsonObject);
        handler([jsonObject valueForKeyPath:@"name"]);

    }];

    [dataTask resume];

}
 

Комментарии:

1. Должен ли это быть заголовок GET запроса? Это очень необычный способ сделать это. Обычно вы просто делаете POST запрос с Content-Type помощью of application/json , а затем включаете JSON в тело запроса, а не в заголовок.