3

AFNetworking是否可以与 UIWebView共享会话?我曾经AFNetworking登录到远程服务器,但 UIWebView 不知道会话是由AFNetworking?

4

2 回答 2

2

其实AFNetworkingUIWebView共享同一个cookies存储。因此,我们不需要任何特殊技术来让UIWebView“共享”由 初始化的会话,或用于存储 cookieAFNetworking的任何基于会话的本机请求。NSHTTPCookieStorage在我的情况下,UIWebView没有发现共享会话有用,只是因为初始化的会话AFNetworking缺少仅在使用浏览器浏览站点时发送的 cookie。

这是我为解决问题所做的:

// 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共享任何由本机登录例程初始化的会话。

于 2016-06-01T08:32:43.163 回答
1

尝试使用 UIWebView+AFNetworking 类别来调用loadRequest.

http://cocoadocs.org/docsets/AFNetworking/3.1.0/Categories/UIWebView+AFNetworking.html

于 2016-05-31T08:21:13.187 回答