在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的答案。