使用&符“&”发布任何文字回到Web服务导致问题

时间:2013-08-07 04:46:50

标签: iphone objective-c

我发布带有&符“&”的文字回到Web服务,它导致我的Objective C应用程序出现问题。

我必须以某种方式逃脱它。

有什么想法吗?......我现在对Objective C和iPhone编程很陌生......

2 个答案:

答案 0 :(得分:1)

当您尝试传递URL中的某些值并且值包含用于分隔&中的参数的URL时会发生这种情况,因此Web服务器会将内容转换为部件遇到&而不是将其作为单个连续值 您可以对字符串进行url编码以解决问题。

NSString *valueToSubmit = @"This is my value which contains & in it.";
NSString *urlEncodedString  = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)valueToSubmit,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));
NSLog(@"Non-Encoded: %@ \n Encoded: %@",valueToSubmit,urlEncodedString];

输出将是这样的:

Non-Encoded: This is my value which contains & in it.
URL Encoded: This%20is%20my%20value%20which%20contains%20%26%20in%20it.

答案 1 :(得分:0)

我认为你发布了类似“面包和黄油”之类的内容,那么你在网络服务中看到的内容就是错过了&可能还有几个字符,甚至是一个奇怪的角色。尝试更换&与&所以在上面的示例中,您将发布“bread & butter”。如果您尝试发送<或者>和其他一些人物。如果你使用谷歌NSString HTML转义,你会发现可以帮助你做到这一点的Objective C类别。

对于像www.mysite / foo& bar.html这样的网址,您可能希望将其替换为&与%26所以www.mysite / foo%26bar.html。在查询字符串中也是如此。更换&与%26