2009-11-02 8 views
11

私は、誰かが次のことを明らかにすることを望んでいます。私はこれで正しい方向に向かっていると思います。私はユーザ/パスコンボで自分のサーバにログインしたいと思うので、正しくログインしていれば(クッキーをドロップしてください)、次にそうする場合は別のリクエストをします。iPhone POSTリクエストを行い、クッキーを扱います

すべてのヘルプ感謝、HERESに私が働いているコード:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

NSString *post =[NSString stringWithFormat:@"name=%@&pass=%@",@"foo", @"bar"]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:@"http://www.mywebserver.com/login.php"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 

NSError *error; 
NSURLResponse *response; 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
NSLog(data); 

// HOW to Check if there was a Cookie dropped?? 


// Make another request.. 

答えて

10

は、これは動作するはずです:

NSDictionary *headerFields = [(NSHTTPURLResponse*)response allHeaderFields]; 
NSURL *url = [NSURL URLWithString:@"http://www.mywebserver.com/login.php"]; 
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headerFields forURL:url]; 

cookies配列が希望クッキーが含まれている場合は、あなたが知ることができます。

あなたはまた、応答を受信した後、これを呼び出すことができます。ここでは

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]; 
3

があなたの現在のコードを使用して可能な解決策である:

1 - あなたが最初にやることは良いです:クッキーポリシーを設定します一般的に。

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHttpCookieStorage]; 
[cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

2 - その後、あなたの要求に、あなたは(セッション情報を注入するために)、クッキーを使用することを指定する必要があります。

[request setHTTPShouldHandleCookies:YES]; 

あなたがこのフィールドを設定する必要があります認証とそれ以降の要求

+0

だけで簡単に修正、それは読んでください: 'NSHTTPCookieStorage * cookieStorage = [NSHTTPCookieStorage sharedHttpCookieStorage];' の情報をお寄せいただきありがとうございます! –

+1

アンソンを指摘してくれてありがとう、ちょうど修正しました。 – Sauleil

関連する問題