0

私のプログラムでは、2 つの関数を呼び出します。1 つ目は aa login で、2 つ目はデータを解析する関数です。

セッションを保存するには、ログイン機能を使用して、Cookie を次のように保存します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [receivedData setLength:0];
    if(connection == conn_login){
        NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
        NSDictionary *fields = [HTTPResponse allHeaderFields];
        cookie = [fields valueForKey:@"Set-Cookie"];
    }
}

Cookieを印刷すると、次のようになります。

userid=1; expires=Mon, 05-Aug-2013 19:22:18 GMT; path=/; domain=www.mydomain.com

「userid=1」は私が興味を持っているものです。

したがって、データを解析する次の NSURLRequest では、保存された Cookie を設定するのが好きです。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL
URLWithString:@"http://www.mydomain.com/?getList"]];
[request setValue:cookie forHTTPHeaderField:@"Set-Cookie"];

しかし、うまくいきません。以前の Cookie は設定されておらず、2 番目のリクエストの完全なヘッダーを出力しても、「ユーザー ID」などはありません。

私は何を間違っていますか?皆さん、ありがとうございました。

4

1 に答える 1

1

このコード行を使用する必要があると思います...疑問がある場合はお知らせください

NSArray *cookies1 = [[ NSHTTPCookieStorage sharedHTTPCookieStorage] cookies ];

NSDictionary *cookieHeaders;

cookieHeaders = [ NSHTTPCookie requestHeaderFieldsWithCookies: cookies1];

[request setValue: [cookieHeaders objectForKey: @"Cookie" ]forHTTPHeaderField:@"Cookie" ];
于 2013-03-14T20:25:59.823 に答える