Mechanize を使用する Python アプリを iPhone に移植したいと考えています。このアプリは Web ページにログインし、サイト Cookie を使用してそのサイトの他のページに移動してデータを取得する必要があります。
私のpythonアプリでは、自動Cookie管理にmechanizeを使用していました。iPhoneに移植可能なObjective Cに似たものはありますか?
助けてくれてありがとう。
Mechanize を使用する Python アプリを iPhone に移植したいと考えています。このアプリは Web ページにログインし、サイト Cookie を使用してそのサイトの他のページに移動してデータを取得する必要があります。
私のpythonアプリでは、自動Cookie管理にmechanizeを使用していました。iPhoneに移植可能なObjective Cに似たものはありますか?
助けてくれてありがとう。
NSURLConnection
無料でクッキー管理を提供します。URL Loading System Programming Guideから:
URL 読み込みシステムは、NSURLRequest に適した保存済み Cookie を自動的に送信します。リクエストで Cookie を送信しないように指定されている場合を除きます。同様に、NSURLResponse で返される Cookie は、現在の Cookie 受け入れポリシーに従って受け入れられます。
NSURLConnection クラスを使用して、HTTP 要求を実行して Web サイトにログインし、Cookie を取得できます。リクエストを実行するには、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
}
Cookie 文字列を保持またはコピーします。別のリクエストを実行する場合は、それを NSURLRequest インスタンスの HTTP ヘッダーに追加します。
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:@"Cookie"];
@zonbleの答えは、私のローカルホストでのみ機能します。サーバーがローカルで実行されていない場合、「Set-Cookie」ヘッダーが NSDictionary にありません *fields = [HTTPResponse allHeaderFields];
最後に、@ benzadoのソリューションがうまく機能することがわかりました。参照: iphone nsurlconnection read cookies @Tal Bereznitskey's answer.