代码之家  ›  专栏  ›  技术社区  ›  Anna565

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

  •  2
  • Anna565  · 技术社区  · 12 年前

    我有一个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中包含一些带有空格的文本。但如果我这样做,我会出现一个错误“在-[AFTTPRequestSerializer requestWithMethod:URLString:parameters:error:]中断言失败” 显然,没有空格,我没有任何错误。 你知道如何在url中包含空格而不出错吗? 非常感谢。

    4 回复  |  直到 12 年前
        1
  •  11
  •   Arkadiusz    12 年前
    ulrString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    它应该能解决问题。 问候语

        2
  •  2
  •   nswamy    12 年前

    试试这个

    [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]

    您也可以检查这些- AFPercentEscapedQueryStringKeyFromStringWithEncoding AFPercentEscapedQueryStringValueFromStringWithEncoding .

    - (NSString*) urlEnocodeString { 
    
        CFStringRef encodedCFString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                                                                            (__bridge CFStringRef) self, 
                                                                              CFSTR(" "),
                                                                           NULL,
                                                                            kCFStringEncodingUTF8);
    
        return [[NSString alloc] initWithString:(__bridge_transfer NSString*) encodedCFString];    ;
    }
    
        3
  •  0
  •   madcowzz    12 年前

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

        4
  •  0
  •   NehaK    8 年前

    对于iOS 9,这将起作用:

    目标C:

    [query stringByAddingPercentEncodingWithAllowedCharacters:
            [NSCharacterSet URLQueryAllowedCharacterSet]];