2016-05-31 8 views

Antwort

0

Eigentlich AFNetworking und UIWebView der gleiche Speicher Cookies. Daher benötigen wir keine spezielle Technik, um UIWebView eine durch AFNetworking initialisierte Sitzung oder eine systemeigene sitzungsbasierte Anfrage, die NSHTTPCookieStorage zum Speichern von Cookies verwendet, "freigeben" zu lassen. In meiner Situation fand die UIWebView freigegebene Sitzung nicht nützlich, nur weil die Sitzung, die von AFNetworking initialisiert wurde, ein Cookie fehlte, das nur gesendet wurde, wenn die Website mit einem Browser durchsucht wird.

Und hier ist das, was ich das Problem zu lösen hat:

// 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"); 
}]; 

Above Code stellt sicher, dass wir alle Browser-spezifische Cookies in NSHTTPCookieStorage haben, also lassen Sie die UIWebView Aktie jede Sitzung, die von nativen Login-Routine initialisiert.