2011-01-11 12 views
0

次のコードで非同期的にHTTPSサイトに接続しようとしています。
何も起こりません。 setRequestDidFinishSelectorまたはsetRequestDidFailSelectorは決して呼び出されません。
- 私は、要求を同期に設定してテストしようとしました。
- ASIHTTPRequestのドキュメントで__blockを試してみましたが、これも機能します。失敗ASIFormDataRequestを使用した非同期要求

誰でもお手伝いできますか?

Thx!

- (NSArray*) requestAccessForUser: (NSString*) user 
    withPassword:(NSString*) password 
    { 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:authPageURL]; 
    [request setPostValue:user forKey:@"user"]; 
    [request setPostValue:password forKey:@"pwd"]; 
    [request setRequestMethod:@"POST"]; 
    [request setDelegate:self]; 
    [request setRequestDidFailSelector:@selector(requestFailed:)]; 
    [request setRequestDidFinishSelector:@selector(requestFinished:)]; 
    [request setTimeOutSeconds:30]; 

    //[request startSynchronous]; // <= This works 
    [request startAsynchronous]; // <= This crashes 

} 

- (void)requestFinished:(ASIHTTPRequest *)request{ 
    NSLog(@"requestFinished: %@", [request responseString]); 
} 

- (void)requestFailed:(ASIHTTPRequest *)request{ 
    NSError *error = [request error]; 
    NSLog(@"oops: %@", [error localizedDescription]); 
} 

答えて

0

コードでは、setRequestDidFinishSelectorの代わりにセレクタsetQueueDidFinishSelectorを設定しています。実際に、クラスがASIHTTPRequestDelegateプロトコルに準拠している場合、それらのセレクターを設定する必要はありません。デフォルトで呼び出されます。

+0

これは誤植でした...ごめんなさい!実際にsetQueueDidFinishSelectorはコード内のsetRequestDidFinishSelectorです。クラッシュはまだ起こっています:(今のところ、私はインライン__blockを使って終了したか、失敗したステータスを委譲してしまいましたが、なぜこれが非同期的にクラッシュしたのか分かりました。 –

関連する問題