可能重复:
URL encode a NSString
我正在尝试使用以下空格发送字符串:
stack exchange
通过
[[ApiClient sharedClient] getPath:[NSString stringWithFormat:@"/search/?q=%@", @"stack exchange"] parameters:nil success:^ ...
但我得到了
Error Domain=NSURLErrorDomain Code=-1000 "bad URL"
我该如何解决这个问题?
答案 0 :(得分:0)
您将要对您的网址参数进行编码。
// Add this to your class or universal class to be used
// Encode a string to embed in an URL.
NSString *encodeToPercentEscapeString(NSString *string) {
return (__bridge NSString *)
CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef) string,
NULL,
(CFStringRef) @"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
}
// now you can encode your parameters before adding to your url
NSString *urlParam = @"My custom text";
urlParam = encodeToPerecentEscapeString(urlParam);
// now you can use urlParam in any url parameter requirement
答案 1 :(得分:0)
我前一段时间制作了一个示例项目,它显示了在ObjC中转义字符串的不同方法。这是on github
我最终使用了这样的东西:
NSString *escapedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef) myString, NULL, CFSTR("!*()$&`:<>[]{}\"+#@/;=?\\^|~'%%,."), kCFStringEncodingUTF8));
这似乎涵盖了我能找到的所有边缘情况。