1

我正在尝试将数据从我的 iPhone 客户端发送到服务器。它适用于大多数值,但是当我尝试发送像“IPhone+Cocoa”这样的字符串时,服务器将字符串显示为“IPhone Cocoa”。我试图用谷歌搜索它,但没有成功,有什么理由这样做。

这是我的代码

-(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

1 回答 1

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 to send to 有类似问题-[UIApplication openURL:]

注意欢迎使用 Stack Overflow!不要忘记阅读常见问题解答并为您的问题标记已接受的答案(当然,如果它们是值得接受的好答案)。

于 2009-11-28T06:51:36.627 回答