在iPhone上管理HTTP Cookie

dan*_*dan 34 iphone cookies objective-c www-mechanize

我想移植一个使用机械化的iPhone应用程序.此应用需要登录网页并使用网站cookie转到该网站上的其他网页以获取一些数据.

使用我的python应用程序,我使用mechanize进行自动cookie管理.对于可移植到iPhone的Objective C有类似的东西吗?

谢谢你的帮助.

Ste*_*sen 72

NSURLConnection免费为您提供cookie管理.从URL加载系统编程指南:

URL加载系统自动发送适用于NSURLRequest的任何存储的cookie.除非请求指定不发送cookie.同样,根据当前的cookie接受政策,接受NSURLResponse中返回的cookie.

  • 参见` - [NSHTTPCookieStorage cookiesForURL:]`. (3认同)

zon*_*ble 44

您可以使用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)

  • 您不需要这样做,NSURLConnection会自动存储和发送cookie,除非您明确告知不要这样做. (26认同)