当我在url中包含空格时AFHTTPRequestSerializer中的AfNetworking失败

时间:2014-02-21 10:13:56

标签: ios json afnetworking

我有AFNetworking的Get请求,代码是:

NSString *url = /*url*/;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil];
[manager GET:urlMessage parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {...}

我必须在url中包含一些带空格的文本。但是,如果我这样做,我有一个错误“断言失败 - [AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:]” 显然,没有空格,我没有任何错误。 你知道如何在网址中包含空格而不出错吗? 谢谢。

4 个答案:

答案 0 :(得分:11)

ulrString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

它应该解决问题。 迎接

答案 1 :(得分:2)

试试这个

[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]

您还可以查看这些内容 - AFPercentEscapedQueryStringKeyFromStringWithEncodingAFPercentEscapedQueryStringValueFromStringWithEncoding

- (NSString*) urlEnocodeString { 

    CFStringRef encodedCFString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                                                                        (__bridge CFStringRef) self, 
                                                                          CFSTR(" "),
                                                                       NULL,
                                                                        kCFStringEncodingUTF8);

    return [[NSString alloc] initWithString:(__bridge_transfer NSString*) encodedCFString];    ;
}

答案 2 :(得分:0)

不建议在URL中使用空格。 无论如何,您必须对您的URL进行URL编码以替换空格

答案 3 :(得分:0)

对于iOS 9,这将起作用:

目标-C:

[query stringByAddingPercentEncodingWithAllowedCharacters:
        [NSCharacterSet URLQueryAllowedCharacterSet]];