2

ログイン申請をしたいのですが。2つのテキストフィールドと1つのボタンを備えた最初の画面のログインフォーム。このボタンを押すと、このメソッドを呼び出す1つのメソッドを呼び出します。

- (int)login {
// Add data to post request

NSHTTPURLResponse * response;
NSString *myRequestString = [[NSString alloc] initWithFormat:@"userdata='%@'&passdata='%@'",
                             username.text, password.text];
NSError * error;
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request;
request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://server.com/login.php"]
                                        cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                    timeoutInterval:60] autorelease];

[request setHTTPMethod: @"POST"];
[request setHTTPBody: myRequestData];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];

NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];  

NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@"http://server.com/login.php"]];

//int cid;

for (NSHTTPCookie *cookie in all) {
    NSLog(@"Name: %@ : Value: %@", cookie.name, cookie.value); 
//    cid = (int)cookie.value;
}

//  NSLog(@"id: %d",cid);

[myRequestString release];
[request release];

return 1;
}

このボタンを押すと、プログラムがクラッシュし、この行の横に表示されます。

NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@"http://sms.britecs.com/login.php"]];

私は持ってThread1: Program received signal: "EXC_BAD_ACCESS"いますが、それを修正する方法がわかりません。

もう1つ質問があります。次の画面でこのCookieを使用するにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

[request release];自動リリースされたオブジェクトをリリースします。そうしないでください。自動解放プールによって次の実行ループサイクルで解放されます。初期化の最後に自動リリースを削除すれば問題ありません。それ以外の場合は、リリースステートメントを削除してください。

ここで作成しています:

request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://server.com/login.php"]
                                        cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                    timeoutInterval:60] autorelease]; // <---
于 2011-05-11T06:56:25.157 に答える