Я начинающий разработчик iOS. У меня есть приложение, которое требует входа в систему, и у него есть функции, которые делают HTTP-запросы через приложение. В соответствии с моим пониманием, когда при входе в систему сервер отправляет приложению уникальный cookie сеанса, который нам нужно использовать с последующими HTTP-запросами в тот же сеанс. Мой метод, который делает HTTP-запрос, приведен ниже. Все запросы в моем приложении используют этот же метод.Файлы cookie сеанса HTTP в iOS
+ (NSData*)makeHTTPPostRequestToURL:(NSURL *)url withPostString:(NSString *)postString{
if (!postString)
{
postString = [NSString stringWithFormat:@""];
}
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url];
NSString *authStr = [NSString stringWithFormat:@"genuser:genuser"];
NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:authValue forHTTPHeaderField:@"Authorization"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[urlRequest setValue:[NSString stringWithFormat:@"%lu", (unsigned long)postString.length] forHTTPHeaderField:@"Content-Length"];
postString =[self specialencoding:NSUTF8StringEncoding :postString ];
NSLog(@"Request log is %@", postString);
[urlRequest setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"POST:ESCAPED:%@",postString);
NSHTTPURLResponse* urlResponse = nil;
NSError* error = nil;
NSData* responseData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&error];
return responseData;
}
Как вы можете видеть, я не использую cookie, когда я делаю запрос в том же сеансе. Все запросы работают нормально. Мое сомнение заключается в том, как запрос подается в тот же сеанс, если он не отправляет куки-файл с ним. IOS сохраняет последний полученный файл cookie для каждого приложения и добавляет его с дальнейшими запросами приложения. Какие-нибудь идеи?
Привет @thatidiotguy Спасибо за ответ на мой вопрос. Если я запрашиваю сервер для нового сеанса (в случае таймаута сеанса), снова отправляя учетные данные, будет ли старый файл cookie заменен новым для последующих запросов? – chaithu
@chaithu Я не знаю, почему бы вам не попробовать? Я отправлю код для извлечения файлов cookie в хранилище. Дай мне минуту. – thatidiotguy