我有网址要求我提供数据。这是代码。
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:
NSASCIIStringEncoding];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlStr]];
除非我有某些字符,例如ş
,否则此方法有效。 urlstr将返回null。除了某些字符类型之外,有没有办法解决这个问题?任何提示或建议都表示赞赏。
答案 0 :(得分:1)
我在许多应用程序中成功使用了以下方法:
- (NSString *)urlEncode:(NSString *)str {
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)str, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8));
}
请注意,我只在 URL的params上使用它,所以以下方法可行(注意我添加了ş,它似乎有用,虽然我不熟悉那个字符) :
NSString *baseURL = @"http://www.google.com";
NSString *paramsString = @"testKey=test value_with some (weirdness)!___ş";
NSString *resultingURLString = [NSString stringWithFormat:@"%@?%@", baseURL, [self urlEncode:paramsString]];
产生结果:
http://www.google.com?testKey%3Dtest%20value_with%20some%20%28weirdness%29%21___%C5%9F