我使用GET方法向外部API发出请求。 由于某些原因,如果searchText包含空格,我得到的结果不起作用,例如它适用于stackoverflow,但如果searchText作为“堆栈溢出”输入,它将无法工作(假设两个值都存在)。在发出URL请求之前,我是否需要转义?
NSString *urlstr = [[NSString alloc] initWithFormat:@"http://mysite.com/xyz?nameBeginsWith=%@", searchText];
答案 0 :(得分:27)
你试过这个吗?
NSString *urlstr = [NSString stringWithFormat:@"http://mysite.com/xyz?nameBeginsWith=%@", searchText];
urlstr = [urlstr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
stringByAddingPercentEscapesUsingEncoding
接受一个字符串并返回相同的字符串百分比转义,以合法地用作URL。因此,您的问题的答案是肯定的,NSURL
需要正确转义的字符串进行初始化
答案 1 :(得分:1)
方法stringByAddingPercentEscapesUsingEncoding
现已弃用。
转义网址的正确方法是:
NSString * escapedSearchText = [searchText stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSString * url = [NSString stringWithFormat:@ “http://example.com/xyz?nameBeginsWith=%@”, escapedSearchText];