4

I have a REST API which is secured by digest. I want to download my JSON response, but first I've to authenticate against the rest api. I'm doing my Requests with sendAsynchronousRequest:queue:completionHandler:. But I don't know how to handle the digest authentication. I thought with the delegate method didReceiveAuthenticationChallenge of NSURLConnectionDelegate this should be possible? I've declared in the .h file the NSURLConnectionDelegate and added in the implementation the method. But nothing happens. Any advice how to handle this with "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"); }
4

2 に答える 2

3

は、インスタンスを接続のデリゲートconnection:didReceiveAuthenticationChallenge:として指定した場合にのみ呼び出されます。そのためには、別のメソッドを使用してリクエストを開始する必要があります。たとえば、次のようになります。

NSURL *url = [NSURL URLWithString:@"http://restapi/"];

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:urlRequest delegate:self]

応答を受け取るには、さらにデリゲート メソッドを実装する必要があります。

connection:didReceiveAuthenticationChallenge:他のデリゲート メソッドを優先するため、 は推奨されないことに注意してください (このページを参照してください)。

于 2012-04-18T10:54:36.930 に答える
0

この質問チェーンセットを見てください。これが役立つ場合があります。

完了ハンドラを使用した NSURLConnection sendAsynchronousRequest による認証

于 2013-07-29T12:30:14.503 に答える