我知道有人问过这个问题,但我没有找到满意的答案。我有一种方法可以发送我的所有 URLRequest。当方法完成时,我将请求的响应作为字符串返回。我最近在我的程序中添加了 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