#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
помощью ofapplication/json
, а затем включаете JSON в тело запроса, а не в заголовок.