ASIHTTPRequest を使用して webservice (soap) を呼び出します。
-(void)callWebService:(NSString*)URL:(NSString*)SOAP{
NSURL *url = [NSURL URLWithString:URL];
NSString *SOAPMessage = [NSString stringWithFormat:SOAP];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.shouldAttemptPersistentConnection = NO;
[request setValidatesSecureCertificate:NO];
[request setRequestMethod:@"POST"];
[request appendPostData:[SOAPMessage dataUsingEncoding:NSUTF8StringEncoding]];
[request setDidFinishSelector:@selector(requestCompleted:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDelegate:self];
[request startAsynchronous];
}
-(void)requestCompleted:(ASIHTTPRequest * )r{
NSString *responseString = [r responseString];
NSLog(@"%@",responseString);
}
-(void)requestFailed:(ASIHTTPRequest * )r{
NSError *Err = [r error];
NSLog(@"%@",Err);
}
これをappDelegate.mで呼び出すと、正常に動作し、requestCompletedハンドラーが応答をスローします...しかし、自分のクラスでこの同じコードを使用すると、BAD ACCESSエラーがスローされ、委任できないことがわかりました:self to handle応答。setDelegate を appdelgate ポインター (ID 送信者として渡される) に設定すると、機能します (そこにハンドラーがあります)。では、なぜ自分のクラスが独自のイベントを処理できないのでしょうか? 私はobjective-cが初めてなので、ここで大きな何かが欠けていると思います。ありがとう