2015-01-11 3 views
1

Это мой код:Не может использовать специальные символы с помощью NSURLConnection sendSynchronousRequest

NSURL *s =[self getAbsoluteURL:url]; 
NSMutableURLRequest *requestURL = [NSMutableURLRequest requestWithURL:s cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120.00]; 
[requestURL setHTTPMethod:@"POST"]; 
NSLog(@"%@",parameter); 
NSError *error = [[NSError alloc] init]; 
if ([parameter isKindOfClass : [NSString class]]) { 
    [requestURL setHTTPBody:[parameter dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]]; 
} 

NSHTTPURLResponse *response; 
NSError *error1; 
NSData *apiData = [NSURLConnection sendSynchronousRequest:requestURL returningResponse:&response error:&error1]; 

Он работает нормально, но когда я отправляю некоторые специальные символы, такие как «&» он ничего не отправляет на сервер, это отправить данные пустых.

Корпус: Фактический параметр: "& & &" Опубликовано: ""

Может кто-нибудь дать мне подсказку, как решить эту проблему?

+1

Просто протестировал свой код с помощью iPhone Simulator, и он отлично работает. Исходные данные - «&&&» (3 байта), как указано в параметре. Если ваша серверная сторона ожидает форму, она будет пуста, конечно, потому что нет фактических данных, размещенных только разделителями. –

+1

попробуйте заменить & с помощью% 26 –

ответ

0

Мне просто нужно было отправить данные по кодировке URL. Для кодирования я использовал это:

-(NSString *)encodeData : (NSString *)string { 
    return (NSString *) 
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, 
              (CFStringRef) string, 
              NULL, 
              (CFStringRef) @"!*'();:@&=+$,/?%#[]", 
              kCFStringEncodingUTF8)); 
} 

Теперь данные размещены так, как я хотел. :)

Смежные вопросы