4

Cookie が必要な特定の URL にアクセスしようとしてUIWebViewいますが、Cookie が無効になっているためアクセスできません。だから私は次のことをしました:

  • 有効な Cookie:

    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    
    [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
    
  • NSURLConnection応答から Cookie を作成して抽出しました:

    NSArray *cookies = [ NSHTTPCookie cookiesWithResponseHeaderFields: [ httpResponse allHeaderFields ] forURL:response.URL];
    
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies: cookies forURL: response.URL mainDocumentURL:nil];
    

しかし、これはどちらも役に立ちませんでした。ただし、サファリで URL を起動すると、正常に読み込まれ、その後、同じ URL も読み込むことができますUIWebView。の Cookie を有効にするにはどうすればよいUIWebViewですか?

前もって感謝します

4

1 に答える 1

6

を作成した後NSURLRequest、sharedHTTPCookieStorage 内のすべての Cookie を にコピーしますNSURLRequest

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPShouldHandleCookies:YES];
[self addCookies:cookies forRequest:request];
[_webView loadRequest:request];

addCookies:forRequestそしてメソッドを追加

- (void)addCookies:(NSArray *)cookies forRequest:(NSMutableURLRequest *)request
{
    if ([cookies count] > 0)
    {
        NSHTTPCookie *cookie;
        NSString *cookieHeader = nil;
        for (cookie in cookies)
        {
            if (!cookieHeader)
            {
                cookieHeader = [NSString stringWithFormat: @"%@=%@",[cookie name],[cookie value]];
            }
            else
            {
                cookieHeader = [NSString stringWithFormat: @"%@; %@=%@",cookieHeader,[cookie name],[cookie value]];
            }
        }
        if (cookieHeader)
        {
            [request setValue:cookieHeader forHTTPHeaderField:@"Cookie"];
        }
    }
}
于 2013-03-07T09:12:39.927 に答える