【问题标题】:How can I send strings with whitespaces by AFNetworking client? [duplicate]如何通过 AFNetworking 客户端发送带有空格的字符串? [复制]
【发布时间】:2012-12-08 02:04:01
【问题描述】:

可能重复:
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"

这个怎么卖?

【问题讨论】:

标签: ios afnetworking


【解决方案1】:

您将要对您的 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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-13
      • 2015-11-06
      • 2017-10-11
      • 1970-01-01
      • 2015-08-30
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多