2015-04-17 2 views
1

Я делаю сообщение с обязательным «&» в одном из параметров. Я пробовал %26 для & с NSUTF8StringEncoding, а также, stringByAddingPercentEscapesUsingEncodqing(NSUTF8StringEncoding). Не работает.POST требуется амперсанд «&» в параметре для Swift

let params = "designers=dolce%26gabbana"  
let nStr = params.stringByAddingPercentEscapesUsingEncodqing(NSUTF8StringEncoding) 
let postData = nStr?.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
request.HTTPBody = postData 

Строка им регистраци «Dolce Gabbana &», а сервер распознает его только с «&».

Спасибо!

ответ

3

Вы должны попробовать с CFURLCreateStringByAddingPercentEscapes. Причина stringByAddingPercentEscapesUsingEncodqing не ускользает от всех символов. Используя CFURLCreateStringByAddingPercentEscapes, вы выбираете символы для экранов.

Пример:

var encodedStr = CFURLCreateStringByAddingPercentEscapes(
    nil, 
    "Dolce & Gabbana", 
    nil, 
    "&", //you can add another special characters 
    CFStringBuiltInEncodings.UTF8.rawValue 
) 

Here is another SO question по этой теме (в Objective-C)

+0

Спасибо! как бы я начал кодировать его для HTTPBody? Нет. .dataUsingEncoding (NSUTF8StringEncoding, allowLossyConversion: true) для CFString –

+0

попытайтесь получить первую строку по 'let str = String (encodedStr)', а затем конвертируйте в 'NSData'. –

+0

hah. Я просто попробовал это секунду назад. не работает. :( –