34

Mechanize を使用する Python アプリを iPhone に移植したいと考えています。このアプリは Web ページにログインし、サイト Cookie を使用してそのサイトの他のページに移動してデータを取得する必要があります。

私のpythonアプリでは、自動Cookie管理にmechanizeを使用していました。iPhoneに移植可能なObjective Cに似たものはありますか?

助けてくれてありがとう。

4

3 に答える 3

72

NSURLConnection無料でクッキー管理を提供します。URL Loading System Programming Guideから:

URL 読み込みシステムは、NSURLRequest に適した保存済み Cookie を自動的に送信します。リクエストで Cookie を送信しないように指定されている場合を除きます。同様に、NSURLResponse で返される Cookie は、現在の Cookie 受け入れポリシーに従って受け入れられます。

于 2010-04-20T15:29:52.837 に答える
44

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"];
于 2010-03-16T18:26:50.157 に答える
0

@zonbleの答えは、私のローカルホストでのみ機能します。サーバーがローカルで実行されていない場合、「Set-Cookie」ヘッダーが NSDictionary にありません *fields = [HTTPResponse allHeaderFields];

最後に、@ benzadoのソリューションがうまく機能することがわかりました。参照: iphone nsurlconnection read cookies @Tal Bereznitskey's answer.

于 2015-07-27T08:28:02.807 に答える