在iPhone上pipe理HTTP Cookie

我想移植一个使用iPhone的机械化的Python应用程序。 这个应用程序需要login到一个网页,并使用该网站的cookie转到该网站上的其他页面来获取一些数据。

与我的Python应用程序,我使用机械化自动cookiepipe理。 Objective C中是否有类似于iPhone的便携式设备?

感谢您的帮助。

NSURLConnection为您免费提供cookiepipe理。 从URL加载系统编程指南 :

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

您可以使用NSURLConnection类来执行HTTP请求来login网站,并检索cookie。 要执行请求,只需创build一个NSURLConnection的实例并为其分配一个委托对象。

 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]; NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; 

然后,实现一个委托方法。

 - (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 } 

保留或复制cookiestring。 当你想执行另一个请求时,把它添加到你的NSURLRequest实例的HTTP头部。

 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]; [request addValue:cookie forHTTPHeaderField:@"Cookie"]; 

@ zonble的答案只适用于我的本地主机; 如果服务器没有在本地运行,NSDictionary *字段中缺less“Set-Cookie”标题= [HTTPResponse allHeaderFields];

最后我发现@ benzado的解决scheme工作正常。 另见: iphone nsurlconnection读取cookies @Tal Bereznitskey的答案。