iOS UIwebView Auth Cookies

Hec*_*tor 5 iphone objective-c++ webview ipad ios

我有一个UIWebView加载用户身份验证的网站.该站点创建一个身份验证cookie.在浏览器中,除非您清除cookie,否则您将始终登录.当xCODE加载时,它可以在查看cookie jar时看到列出的cookie,但不会发送到webView.我想知道如何让webView意识到auth cookie就在那里,所以它不会每次都继续提示用户进行身份验证.

iCr*_*ive 7

您可以使用NSURLConnection类执行HTTP请求以登录网站,并检索cookie.要执行请求,只需创建一个NSURLConnection实例并为其分配一个委托对象.

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)

然后,实现委托方法.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
    NSDictionary *fields = [HTTPResponse allHeaderFields];
    NSString *cookie = [fields valueForKey:"Set-Cookie"]; // It is your cookie
}
Run Code Online (Sandbox Code Playgroud)

保留或复制cookie字符串.如果要执行其他请求,请将其添加到NSURLRequest实例的HTTP标头中.

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:"Cookie"];
Run Code Online (Sandbox Code Playgroud)

要随时可以调用此方法删除Cookie:

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
        [cookieStorage deleteCookie:each];
    }
Run Code Online (Sandbox Code Playgroud)