2009-11-28 1 views
1

Я пытаюсь отправить данные на сервер с моего клиента IPhone. Он отлично работает для большинства значений, но когда я пытаюсь отправить строку типа «IPhone + Cocoa», сервер показывает строку как «IPhone Cocoa». Я пытался использовать это в Google, но без успеха есть ли какие-либо причины этого.Ошибка с NSURLConnection .....?

Вот мой код

-(void)sendRequestNSString *)aRequest { 

NSMutableURLRequest *request = 
    [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kURLRequest]]; 

NSString *httpBody = 
[NSString stringWithFormat:@"%@=%@", 
[requestString stringByAddingPercentEscapesUsingEncoding:NSUTF8St ringEncoding], 
[aRequest stringByAddingPercentEscapesUsingEncoding:NSUTF8St ringEncoding]]; 

NSData *aData = [httpBody dataUsingEncoding:NSUTF8StringEncoding]; 

[request setHTTPBody:aData]; 
[request setHTTPMethod:@"POST"]; 

self.feedURLConnection = 
     [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
} 

Я действительно возникли проблемы с поиском решения для этого. Это ошибка, или я ошибаюсь, где в моем коде. есть ли другая альтернатива этому

ответ

4

-[NSString stringByAddingPercentEscapesUsingEncoding:] не следует использовать для значений параметров кодирования. Он оставляет определенные специальные символы (+, & и т. Д.), Не кодированные (как и должно быть, если вы кодировали URL-адрес).

Используйте следующее:

NSString *escapedParameter = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)unescapedParameter, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease]; 

не так хороша, как stringByAddingPercentEscapesUsingEncoding:, но вы можете легко сделать макрос для этого.

http://arstechnica.com/apple/news/2009/01/iphone-dev-building-proper-mailto-urls.ars было написано еще в январе, когда я обнаружил подобные проблемы со строительством mailto: URL-адреса для отправки -[UIApplication openURL:].

N.B. Добро пожаловать в переполнение стека! Не забудьте прочитать FAQ и пометить принятые ответы на ваши вопросы (если они, конечно, хорошие ответы, достойные принятия).

+0

Это сработало для меня. Благодарю. Однако мне пришлось снять авторекламу. –

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

  • Нет связанных вопросов^_^