我有一个REST API,它由摘要保护。我想下载我的JSON响应,但首先我要对其余的api进行身份验证。 我正在使用sendAsynchronousRequest执行我的请求:queue:completionHandler:。但我不知道如何处理摘要身份验证。我想用委托方法didReceiveAuthenticationChallenge的NSURLConnectionDelegate这应该可行吗?我在.h文件中声明了NSURLConnectionDelegate,并在实现中添加了该方法。但没有任何反应。有关如何使用“sendAsynchronousRequest:queue:completionHandler:”处理此问题的任何建议?
NSURL *url = [NSURL URLWithString:@"http://restapi/"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil)
[self receivedData:data];
else
NSLog(@"error");
}];
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
NSLog(@"did get auth challenge"); }
答案 0 :(得分:3)
如果您将实例指定为连接的委托,则只会调用connection:didReceiveAuthenticationChallenge:
。为此,您需要使用其他方法来启动请求,例如:
NSURL *url = [NSURL URLWithString:@"http://restapi/"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:urlRequest delegate:self]
您需要实现进一步的委托方法才能收到回复。
请注意,不推荐connection:didReceiveAuthenticationChallenge:
支持其他委托方法(请参阅此page)。
答案 1 :(得分:0)