Немного поздно, но для всех, кто заинтересован, http://code.google.com/p/android-wheel/ - хорошая реализация.
У меня сработало преобразование UTF8 с последующей заменой знака + на% 2B:
NSString *urlString =
[NSString stringWithFormat:@"%@/iphone/push/create?pn[token]=%@&pn[send_at]=%@",
kHTTPURL, appDelegate.deviceAPNToken, [dateTimeToUse description]];
urlString =
[[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
Используйте метод NSString
stringByAddingPercentEscapesUsingEncoding:
для текста, который вы хотите включить в качестве аргумента.
Как следует из названия, метод будет преобразовать, вернет автоматически выпущенную строку, содержащую версию получателя, безопасную для URL.
Подумал, что я могу предоставить свой обходной путь в качестве ответа, поскольку я не думаю, что есть хорошее решение исходной проблемы.
Знак плюс (+) полностью действителен в URL-адрес, поэтому я решил преобразовать время в GMT и удалить смещение часового пояса / летнего времени из строки. Я оставлю это в качестве упражнения для читателя по определению значения secondsFromGMT ниже, поскольку в моем случае оно всегда одно и то же, потому что меня интересуют только временные метки, генерируемые веб-сервером.
NSString *gmtWhen = [[self descriptionWithCalendarFormat:nil
timeZone:[NSTimeZone
timeZoneForSecondsFromGMT:secondsFromGMT
] locale:nil] stringByReplacingOccurrencesOfString:@" +0000" withString:@""];