人々がこれを尋ねてきたことは知っていますが、満足のいく答えは見つかりませんでした. すべての URLRequest を送信するメソッドが 1 つあります。メソッドが完了すると、リクエストのレスポンスを文字列として返します。最近、自分のプログラムに ssl を追加しました。これは、資格情報が現在自己署名しているため、didReceiveAuthenticationChallenge 関数を利用する必要があるため、同期要求を使用できなくなったことを意味します。プログラムは続行するために URL からの応答を必要とするため、応答を待っても害はありません。ただし、コードを保持して完了したら続行する方法を見つけることができないようです。関数を要求するために呼び出された元の関数にアラートを出すことはできますが、その呼び出しの直後にプログラムが応答するようにしたいと考えています。
プログラムを一時停止して、接続からそれを呼び出したメソッドに nsdata を返すにはどうすればよいですか?
ここに、私が何を意味するかを示すための疑似コードをいくつか示します。
- (void) login:(NSString *)username :(NSString *)password {
NSString *str = [NSString stringWithFormat:%@"%@:::%@",username,password];
NSURL *url = [NSURL urlWithString:@"https://blahblahblah"];
NSString *result = [self connectToUrl:str:url];
if ([result isEqualToString:@"valid"]) {
//this would be more complex in here
NSLog(@"hooray");
} else {
NSLog(@"bummer");
}
}
- (NSString *)connectToUrl:(NSURL *)url :(NSString *)str {
NSData *FileData = [str dataUsingEncoding: NSUTF8StringEncoding];
NSMutableData *data = [[NSMutableData alloc] initWithCapacity:100];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
//set up the rest of the request...
...
connection = [NSURLConnection connectionWithRequest:request delegate:self];
[connection start];
//WOULD LIKE TO PAUSE HERE UNTIL COMPLETE! THEN CONTINUE
// received data is assigned in didReceiveData: method
return [[[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding] autorelease];
}
しかし、残念ながら、接続が完了するまで最後の行を待たせることができないため、これを行うことができません...助けてください!
とても感謝しています!
R