Передача параметров в метод JSON Post в nil
NSString *Str = @"Basic YnRwaXhlbDoxMjM0NQ==";
NSArray *keys = [NSArray arrayWithObjects: @"Authorization",nil];
NSArray *objects = [NSArray arrayWithObjects:Str,nil];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSError * error = nil;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONReadingMutableContainers error:&error];
NSURL *urlStr1 = [NSURL URLWithString:@"http://192.168.0.49/bubbletop/index.php?route=feed/rest_api/gettoken&grant_type=client_credentials"];
NSMutableURLRequest *request1 = [[NSMutableURLRequest alloc] initWithURL:urlStr1];
[request1 setHTTPMethod:@"POST"];
[request1 setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request1 setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request1 setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request1 setHTTPBody: jsonData];
_connection = [[NSURLConnection alloc]initWithRequest:request1 delegate:self startImmediately:YES];
NSData *data1 = [NSData dataWithContentsOfURL:urlStr1];
NSDictionary *fashionJson = [NSJSONSerialization JSONObjectWithData:data1 options:kNilOptions error:nil];
NSLog(@"requestReply: %@", fashionJson);
Здесь я передаю параметр поля заголовка как Basic YnRwaXhlbDoxMjM0NQ==
для ключа Authorization
но получить данные как ноль и получить журнал как
requestReply: (ноль)
2 ответа
Решение
Я думаю, что вы добавили поле заголовка как неправильное
не как
NSString *Str = @"Basic YnRwaXhlbDoxMjM0NQ==";
NSArray *keys = [NSArray arrayWithObjects: @"Authorization",nil];
NSArray *objects = [NSArray arrayWithObjects:Str,nil];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSError * error = nil;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONReadingMutableContainers error:&error];
сделать как аутентификацию по токену HTTP
[request1 addValue:@"Basic YnRwaXhlbDoxMjM0NQ==" forHTTPHeaderField:@"Authorization"];
Заметка
нет необходимости добавлять тело здесь
[request1 setHTTPBody: jsonData];
для образца запроса см. это
Так как вы используете NSData *data1 = [NSData dataWithContentsOfURL:urlStr1];
метод, он не возьмет ваш httpbody из созданного вами URL-запроса. Либо реализовать NSURLConnection
делегировать методы или использовать NSURLSession
загрузить данные. поскольку NSURLConnection
API устарел, я бы порекомендовал NSURLSession
,