0

可能重复:
URL 编码一个 NSString

我正在尝试发送带有空格的字符串,例如:

stack exchange

经过

[[ApiClient sharedClient] getPath:[NSString stringWithFormat:@"/search/?q=%@", @"stack exchange"] parameters:nil success:^ ...

但我越来越

Error Domain=NSURLErrorDomain Code=-1000 "bad URL"

这个怎么卖?

4

2 回答 2

0

您将要对您的 url 参数进行编码。

// 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
于 2012-12-20T14:23:24.113 回答
0

不久前我做了一个示例项目,展示了在 ObjC 中转义字符串的不同方法。它在 github 上

我最终使用了这样的东西:

NSString *escapedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef) myString, NULL, CFSTR("!*()$&`:<>[]{}\"+#@/;=?\\^|~'%%,."), kCFStringEncodingUTF8));

这似乎涵盖了我能找到的所有边缘情况。

于 2012-12-20T14:35:20.393 回答