Можно ли провести сеанс AFNetworking
с помощью UIWebView? Я использовал AFNetworking
для входа на удаленный сервер, но UIWebView понятия не имеет о том, что сеанс создается AFNetworking
?Обмен сеансом между AFNetworking и UIWebView
ответ
На самом деле, AFNetworking
и UIWebView
доля хранения же печенье. Поэтому нам не нужна специальная техника, позволяющая «делить» сеанс, инициализированный AFNetworking
, или любой собственный запрос на основе сеанса, который использует NSHTTPCookieStorage
для хранения cookie. В моей ситуации UIWebView
не нашел полезной совместную сессию, потому что в сеансе, инициализированном AFNetworking
, не было куки-файла, которое было отправлено только при просмотре сайта с помощью браузера.
А вот то, что я сделал, чтобы решить эту проблему:
// Open a request to remote server with a User-Agent string set to the request header.
// We'll have browser-specific cookies in NSHTTPCookieStorage
NSString *userAgent = @"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.requestSerializer setValue:userAgent forHTTPHeaderField:@"User-Agent"];
[manager GET:kRemoteServerUrl parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"Done");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"Failure");
}];
Приведенный выше код будет гарантировать, что у нас есть все для разных браузеров куки в NSHTTPCookieStorage, поэтому позволяйте UIWebView
делиться любой сеанс инициализируется родной рутине входа в систему.
Попробуйте использовать категорию UIWebView + AFNetworking для вызова loadRequest
.
http://cocoadocs.org/docsets/AFNetworking/3.1.0/Categories/UIWebView+AFNetworking.html