Iphone 从包含'&';没有给出正确的结果
我从web服务获取字符串“Rasberry&Banana Smoothies”,它将字符串作为三个不同的值而不是单个值获取: 覆盆子Iphone 从包含'&';没有给出正确的结果,iphone,objective-c,web-services,Iphone,Objective C,Web Services,我从web服务获取字符串“Rasberry&Banana Smoothies”,它将字符串作为三个不同的值而不是单个值获取: 覆盆子 & 香蕉冰沙 如果我从服务器数据库中删除&符号,它将按原样获取完整的字符串 我不明白为什么会这样,有人能指导我吗 提前谢谢 这里我发布了获取它的代码,这可能有助于理解问题: - (void)viewDidLoad { [super viewDidLoad]; arrayTitle = [[NSMutableArray alloc]init]; arrayImag
&
香蕉冰沙 如果我从服务器数据库中删除
&
符号,它将按原样获取完整的字符串
我不明白为什么会这样,有人能指导我吗
提前谢谢
这里我发布了获取它的代码,这可能有助于理解问题:
- (void)viewDidLoad
{
[super viewDidLoad];
arrayTitle = [[NSMutableArray alloc]init];
arrayImage = [[NSMutableArray alloc]init];
arrayRecipe = [[NSMutableArray alloc]init];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"2-right-side-sheet-1.png"]];
NSString *url=[[NSString alloc]initWithFormat:@"http://smoktec.net/Monty/api/?"];
NSString *Action=@"action=";
NSString *compUrl=[[NSString alloc]initWithFormat:@"%@%@%@",url,Action,@"Recipes"];
NSURL *urlToPars= [NSURL URLWithString:compUrl];
NSLog(@"%@",compUrl);
[self parseWithUrl3:urlToPars];
}
-(void)parseWithUrl3:(NSURL *)compUrl
{
parser=[[NSXMLParser alloc]initWithContentsOfURL:compUrl];
[parser setDelegate:self];
[parser parse];
[parser release];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
stcurrentelement=[NSString stringWithFormat:@"%@",elementName];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if(!(stcurrentelement==nil))
{
if([stcurrentelement isEqualToString:@"Recipetitle"])
{
[arrayTitle addObject:string];
NSLog(@"%@",string);
}
else if([stcurrentelement isEqualToString:@"RecipeImg"])
{
[arrayImage addObject:string];
NSLog(@"%@",string);
}
else if([stcurrentelement isEqualToString:@"Recipeid"])
{
[arrayRecipe addObject:string];
NSLog(@"%@",string);
}
}
}
您应该对web服务结果/响应进行编码,然后重试。您应该对web服务结果/响应进行编码,然后重试。尝试以下操作:
NSString *compUrl=[[NSString alloc]initWithFormat:@"%@%@%@",url,Action,@"Recipes"];
NSString *URLEncodedText = [compURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
在发出请求之前,您需要对URL字符串进行编码。尝试以下操作:
NSString *compUrl=[[NSString alloc]initWithFormat:@"%@%@%@",url,Action,@"Recipes"];
NSString *URLEncodedText = [compURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
您需要在发出请求之前对URL字符串进行编码。最后,解决方案是在从服务器接收数据后连接字符串
NSString *str = [arrayTitle objectAtIndex:3];
NSString *str1 = [arrayTitle objectAtIndex:4];
NSString *str2 = [arrayTitle objectAtIndex:5];
NSString *strring = [str stringByAppendingString:str1];
NSString *strring1 = [strring stringByAppendingString:str2];
NSLog(@"strr:%@",strring1);
最后,解决方案是在从服务器接收数据后连接字符串
NSString *str = [arrayTitle objectAtIndex:3];
NSString *str1 = [arrayTitle objectAtIndex:4];
NSString *str2 = [arrayTitle objectAtIndex:5];
NSString *strring = [str stringByAppendingString:str1];
NSString *strring1 = [strring stringByAppendingString:str2];
NSLog(@"strr:%@",strring1);
它不会产生任何效果,它的作用是什么?这不是解决这个问题的方法,它会保留保留字符(如斜杠/和符号和&。它为特殊字符添加了百分比编码。&”在URL编码标准中是%26。如果它不起作用,那么可能在将其作为参数传递给compURL之前尝试对NSString*URL进行编码。它没有任何作用,它是干什么的?这不是解决方案,它保留了保留字符(如斜杠/和符号&。它为特殊字符添加百分比编码。“&”在URL编码标准中为%26。如果它不起作用,则可能在将其作为参数传递给Computerl之前尝试对NSString*URL进行编码。