2

iOS アプリケーションでは、以前に取得した証明書要求に署名する必要があります。クエリを実行しようとすると、次のエラーが発生します。

kCFURLErrorUserCancelledAuthentication -1012.

ドキュメントには次のように記載されています。

kCFURLErrorUserCancelledAuthentication ユーザーが必要な認証をキャンセルしたため、接続に失敗しました。

次のように実装されます。

- (void)startConnection {
    NSString *serverURL = @"host.ru/method";
    MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:serverURL customHeaderFields:nil];
    MKNetworkOperation *op = [engine operationWithPath:nil params:nil httpMethod:@"GET" ssl:YES];
    NSString *thePath = [[NSBundle mainBundle] pathForResource:@"client" ofType:@"p12"];
    [op setShouldContinueWithInvalidCertificate:YES];
    op.clientCertificate = thePath;
    op.clientCertificatePassword = @"1234qwerty";

    [op addCompletionHandler:^(MKNetworkOperation *operation) {
        NSLog(@"[operation responseData]-->>%@", [operation responseString]);
    }errorHandler:^(MKNetworkOperation *errorOp, NSError* err) {
        NSLog(@"MKNetwork request error : %@", [err localizedDescription]);
    }];

    [engine enqueueOperation:op];   
}

私は何を間違っていますか?

PS

リクエストに署名しようとする証明書は、事前に受け取っています。ブラウザで個別にテストしましたが、大丈夫です。

同じサーバー リクエストに対する android のアプリケーションは、通常、同じスキームです。

4

1 に答える 1

2

これは、接続が認証チャレンジのリクエストを送信したときに発生する可能性があります。

考えられる原因は、サイトの証明書が無効または信頼されておらず、無効な証明書を受け入れないことを選択したことです。

于 2015-02-13T00:02:30.583 に答える