Перевод C ++ в цель C

0

Это примерно через несколько дней, когда я изо всех сил пытаюсь выполнить работу по археологии, пытаясь перевести фрагмент кода c++ с использованием Qt в объектный-c, для отправки запроса для анализа xml, исходящего с сервера в качестве ответа. Я действительно стараюсь, но не могу этого добиться. Если кто-то может мне помочь.

void RestClient::_prepareRequest( QNetworkRequest& a_request, const QString& a_uri )                  {  
        QSslConfiguration config(QSslConfiguration::defaultConfiguration());
        config.setProtocol(QSsl::SslV3);
        config.setSslOption(QSsl::SslOptionDisableServerNameIndication, true);
        a_request.setSslConfiguration(config);
        a_request.setRawHeader("Accept", "application/xml");
        a_request.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
        QByteArray l_api_key; l_api_key.append( toQString( m_api_key) );
        QByteArray l_request_hash; 
    l_request_hash.append( toQString( _buildRequestHash( toStlString(a_uri) ) ) );
        a_request.setRawHeader("EMApikey", l_api_key );
        a_request.setRawHeader("EMRequestHash", l_request_hash );


        a_request.setUrl( QUrl( a_uri ) );
    }

- (NSString *)hmacsha1:(NSString *)data secret:(NSString *)key {

const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];

unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];

CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];

NSString *hash = [HMAC base64EncodedStringWithOptions:(nil)];

return hash;

}

и вот мой код:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

if ([stories count] == 0) {

    NSString * myServerUrl = @"**************";
    NSString * l_api_key = @"*******************************";
    NSString * l_secret_key = @"************************************";

    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:[myServerUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0];
    //do post request for parameter passing
    [theRequest setHTTPMethod:@"GET"];


    [theRequest setValue:@"xml" forHTTPHeaderField:@"xml"];

    [theRequest addValue:@"l_api_key" forHTTPHeaderField: l_api_key];

    [theRequest addValue:@"l_request_hash" forHTTPHeaderField:[self hmacsha1:l_api_key secret:l_secret_key]];

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

    if( theConnection )
    {
        NSLog(@"we get here !");
        NSURL *webData = [[NSMutableData data] retain];
        [self parseXMLFileAtURL: webData];
        cellSize = CGSizeMake([newsTable bounds].size.width, 60);
    }
    else
    {
        NSLog(@"theConnection is NULL");
    }

    [theConnection release];


}

//cellSize = CGSizeMake([newsTable bounds].size.width, 60);

}

  • 0
    Почему вы не можете продолжать использовать Qt? Твои усилия по переводу - очень скучная работа!
  • 0
    Потому что я не использую Qt в моем проекте c. мы можем использовать Qt в цели c?
Показать ещё 13 комментариев
Теги:
qt

1 ответ

2
Лучший ответ

С фоном в разработке видеоигр обычно приходится переносить код с одного языка на другой. Есть два способа решить эту проблему:

1) Возьмите каждую функцию/класс и непосредственно скопируйте строку кода для строки.

2) Посмотрите, что делает система как черный ящик, с входами и выходами и сами записывайте код.

Обычно номер 2 является лучшим вариантом, так как вы знаете свой собственный код лучше, чем кто-либо другой, и вы сделаете лучшую работу таким образом, вместо того, чтобы пытаться понять, что могло быть другое намерение разработчика в отношении их реализации.

Поэтому я рекомендую вам просто попытаться понять, что должен делать исходный код, а затем написать собственную реализацию в Objective-C. Если это связано с кривой обучения, как ее реализовать, тогда вам будет лучше, если вы изучите и узнаете, что требуется для этого.

  • 1
    Спасибо за хорошие советы.
  • 0
    Не за что; O)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню