NSURLConnection的错误.....?

时间:2009-11-28 06:22:40

标签: iphone nsurlconnection nsurlrequest

我正在尝试从我的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];
}

我真的很难找到解决方案。这是一个错误,或者我的代码中的错误。是否有其他替代方法

1 个答案:

答案 0 :(得分: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是在1月份写的,当时我发现了构建mailto:URL的类似问题,要发送到-[UIApplication openURL:]

N.B。欢迎来到Stack Overflow!不要忘记阅读FAQ并为您的问题标记已接受的答案(当然,如果它们是值得接受的好答案)。