AFNetworking和UIWebView之间的共享会话 [英] Sharing session between AFNetworking and UIWebView
问题描述
是否可以与UIWebView共享 AFNetworking
会话?我使用 AFNetworking
登录到远程服务器,但是UIWebView不知道 AFNetworking
创建的会话是什么?
Is it possible to share AFNetworking
session with UIWebView? I used AFNetworking
to login to remote server, but the UIWebView have no idea about the session being created by AFNetworking
?
推荐答案
实际上,是 AFNetworking
和 UIWebView
共享相同的cookie存储。因此,我们不需要任何特殊技术就可以让 UIWebView
共享由 AFNetworking
初始化的会话,或者任何本地基于会话的请求,该请求使用 NSHTTPCookieStorage
存储cookie。在我的情况下, UIWebView
认为共享会话没有用,只是因为缺少 AFNetworking
初始化的会话
Actually, AFNetworking
and UIWebView
share the same cookies storage. So we don't need any special technique to let UIWebView
"share" a session initialized by AFNetworking
, or any native session-based request which uses NSHTTPCookieStorage
to store cookie. In my situation, the UIWebView
did not find shared session to be useful, just because the session initialized by AFNetworking
has lacked of a cookie which was sent only when browsing the site with a browser.
这是我为解决该问题所做的事情:
And here is what I did to solve the problem:
// 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中具有所有特定于浏览器的cookie,因此让 UIWebView
共享由本机登录例程初始化的任何会话。
Above code will ensure that we have all browser-specific cookies in NSHTTPCookieStorage, hence let the UIWebView
share any session initialized by native login routine.
这篇关于AFNetworking和UIWebView之间的共享会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!