Преобразование хэша информации о торренте _из закодированного в URLEncoded данных

Я создаю парсер торрентов в объекте -c и использую AFNetworking для HTTP-запросов. Мне нужно отправить хэш sha1 части метаинформации для запроса трекера. Я успешно создал хэш и проверил его правильность. Я не могу поместить хэш в NSString, так как он не кодирует двоичные данные, поэтому я поместил его в объект NSData, а затем в параметры для отправки. Это то, что у меня есть прямо сейчас, но я всегда получаю сообщение об ошибке, и я предполагаю, что это связано с методами, которые я использую для отправки хэша. Я также пробовал кодировать URL-адрес хэша, а затем помещать его в NSString безрезультатно

 NSMutableDictionary *parameters = [NSMutableDictionary dictionary];

 unsigned char infoHash[20];
 [self.tracker generateTorrentInfoHash:infoHash];

 const char peer_id[20] = "randomstringfornow";

[parameters setObject:[NSData dataWithBytes:&infoHash length:20] forKey:@"info_hash"];    
[parameters setObject:[NSData dataWithBytes:&peer_id length:20] forKey:@"peer_id"];
[parameters setObject:@(8080) forKey:@"port"];
[parameters setObject:@(0) forKey:@"uploaded"];
[parameters setObject:@(self.tracker.metaInfo.totalFileSize) forKey:@"left"];
[parameters setObject:@(0) forKey:@"downloaded"];
[parameters setObject:@(0) forKey:@"compact"];
[parameters setObject:@"stopped" forKey:@"event"];


[self getPath:@"" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"%@",operation.responseString);


   } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"%@",operation.responseString);
}];

Кто-нибудь знает, есть ли возможный способ сделать это с помощью AFNetworking, или, может быть, я надеюсь, что упустил что-то простое.

6
задан Adam B 12 August 2012 в 06:55
поделиться