【问题标题】:Sharing session between AFNetworking and UIWebViewAFNetworking 和 UIWebView 之间的共享会话
【发布时间】:2016-05-31 08:01:31
【问题描述】:

是否可以与 UIWebView 共享 AFNetworking 会话?我使用AFNetworking 登录远程服务器,但UIWebView 不知道AFNetworking 创建的会话?

【问题讨论】:

    标签: objective-c afnetworking-3 nshttpcookiestorage


    【解决方案1】:

    实际上,AFNetworkingUIWebView 共享相同的 cookie 存储。所以我们不需要任何特殊的技术来让UIWebView“共享”一个由AFNetworking初始化的会话,或者任何使用NSHTTPCookieStorage来存储cookie的本地会话请求。在我的情况下,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 共享任何由本机登录例程初始化的会话。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-12-20
        • 1970-01-01
        • 2011-01-29
        • 2022-01-24
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        相关资源
        最近更新 更多