Проблема с получением описания ошибки после SSL_CTX_new возвратила ПУСТОЙ УКАЗАТЕЛЬ

создайте метод для извлечения данных. Передайте ваш URL в строке urlwithstring.

-(void)fetchjsondata
{
     NSString *login= [[NSString stringWithFormat:@"your url string"]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"----%@", login);
    NSURL *url = [NSURL URLWithString:[login stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    //-- Get request and response though URL
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];


    [NSURLConnection sendAsynchronousRequest:request
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               dispatch_async(dispatch_get_main_queue(), ^{
                                   if (data) {
                                       dic_property= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
                                       NSLog(@"%@", dic_property);
                                       NSLog(@"counts=%d",[[dic_property objectForKey:@"Data"]count]);



                                   }
                                   else {
                                       NSLog(@"network error, %@", [error localizedFailureReason]);
                                   }
                               });

                           }];

}

вызовите fetchjsonmethod в любом месте.

[NSThread detachNewThreadSelector: @selector (fetchdata) toTarget: self withObject: nil];

7
задан user88637 25 May 2009 в 16:23
поделиться

1 ответ

Для создания объекта SSL необходим допустимый контекст.

Поскольку вы не можете создать контекст, вы не можете использовать SSL_get_error.

Попробуйте использовать ERR_print_errors, чтобы узнать, что пошло не так

#include "openssl/err.h"
...

SSL_CTX * ctx = SSL_CTX_new(....);
if(!ctx) {
    ERR_print_errors_fp(stderr);
    //throw or return an error 
}

Я только что прочитал документацию по SSL. Если вам нужно программно получить код ошибки / строку ошибки, вы должны использовать функции ERR_get_error и ERR_error_string.

Посмотрите здесь и здесь

7
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: