Сделайте NSURL с закодированным плюс (%2B)

Немного поздно, но для всех, кто заинтересован, http://code.google.com/p/android-wheel/ - хорошая реализация.

11
задан edoloughlin 22 May 2009 в 15:58
поделиться

3 ответа

У меня сработало преобразование 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"];
13
ответ дан 3 December 2019 в 05:59
поделиться

Используйте метод NSString stringByAddingPercentEscapesUsingEncoding: для текста, который вы хотите включить в качестве аргумента.

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

2
ответ дан 3 December 2019 в 05:59
поделиться

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

Знак плюс (+) полностью действителен в URL-адрес, поэтому я решил преобразовать время в GMT и удалить смещение часового пояса / летнего времени из строки. Я оставлю это в качестве упражнения для читателя по определению значения secondsFromGMT ниже, поскольку в моем случае оно всегда одно и то же, потому что меня интересуют только временные метки, генерируемые веб-сервером.

NSString *gmtWhen = [[self descriptionWithCalendarFormat:nil
                           timeZone:[NSTimeZone
                           timeZoneForSecondsFromGMT:secondsFromGMT
                     ] locale:nil] stringByReplacingOccurrencesOfString:@" +0000" withString:@""];
2
ответ дан 3 December 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: