2010-03-22 2 views
4

создать NSMutableUrlRequest для отправки данных на сервер, добавить все необходимые поля к нему, а затем добавить строку для отправки, как это:NSMutableUrlRequest ест плюс признаки

[theRequest setHTTPBody:[postString dataUsingEncoding: NSUTF8StringEncoding]]; 

postString обычная NSString.

Проблема заключается в том, что, когда я получаю этот запрос на сервере, все знаки плюс (+) исчезают из тела http. Так что, если бы я был «ABCDE + FGHJ» на iPhone, я получаю «ABCDE FGHJ» на сервере»

Может ли это быть какая-то проблема кодирования с использованием dataUsingEncoding:.? NSUTF8StringEncoding Или некоторые NSMutableUrlRequest зачистки особенность Что я могу сделать, чтобы заставлять его останавливать снятие плюс знаки? Мне нужно получить строки UTF8 на стороне сервера.

ответ

4

Знак плюс (+) - это standard shortcut для пробела в строке строки запроса URL. Если вы хотите, чтобы буквальный +, кодировал это как% 2b.

+0

Я не оспариваю ваш ответ, но не это произойдет только тогда, когда строка передается через метод 'stringByAddingPercentEscapesUsingEncoding:' а не только путем кодирования его с помощью UTF8? – Jasarien

+2

спасибо, теперь я понял. Кажется, мне нужно было запустить мою строку через stringByAddingPercentEscapesUsingEncoding: сначала мне нужно было запустить ее через replaceOccurrencesOfString: @ "+" withString: @ "% 2B" и еще несколько из этих замен для разных символов, потому что stringByAddingPercentEscapesUsingEncoding: не берите их всех – Mike

0

Может быть, сервер не знает, что такое кодировка тела POST. Вы пытались добавить charset = UTF-8 в заголовок вашего запроса:

[theRequest setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 
+0

спасибо, у меня было приложение/x-www-form-urlencoded, но не было charset = UTF-8, я добавил, что тоже сейчас – Mike

+0

обновление: просто добавление «application/x-www-form-urlencoded; charset = UTF-8 "не помогает, мне все равно нужно заменить символы на значения%, весь объект POST должен быть сильно закодирован ... – Mike

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