2009-11-28 37 views
1

我想從我的iPhone客戶端發送數據到服務器。它適用於大多數值,但是當我嘗試發送像「IPhone + Cocoa」這樣的字符串時,服務器將該字符串顯示爲「IPhone Cocoa」。我試圖谷歌它,但沒有成功,有沒有任何爲什麼這樣做。錯誤與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:URLs發送到-[UIApplication openURL:]的URL類似。

N.B.歡迎來到堆棧溢出!不要忘記閱讀FAQ併爲您的問題標記接受的答案(當然,如果它們是值得接受的好答案)。

+0

這對我有效。謝謝。我不得不刪除autorelease。 –