美文网首页
iOS AFNetworking URL包含特殊字符处理

iOS AFNetworking URL包含特殊字符处理

作者: 丶天空蓝丶 | 来源:发表于2020-06-30 15:33 被阅读0次

    一:之前开发中,跟后台交互请求数据都放在body里面,直接将字典丢到AFNetworking的parameters参数里面就OK了。但是后面后台交互请求数据都放在header里面了,现在前端直接将参数放在parameters里面将会出现各种问题。需要将字典拼接成URL?key=value&key=value形式。此时,如果直接拼接使用的话,如果里面包含中文,则也会出错。

    二:那么就需要对URL进行转译。之前的方法是

    NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    但是现在这个方法被弃用了,需要换成

      NSString *encodedString = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    

    三:但是如果包含特殊字符的话,特殊字符会被转换成%234这样的字符串,又出问题了。此时又需要换一个方法。

    - (NSString *)urlQueryStringWithDic:(NSDictionary *)dic {
     
        NSMutableString *string = [NSMutableString string];
        for (NSString *key in [dic allKeys]) {
            if ([string length]) {
                [string appendString:@"&"];
            }
            CFStringRef escaped = CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)[[dic objectForKey:key] description], NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
            [string appendFormat:@"%@=%@", key, escaped];
            CFRelease(escaped);
        }
        return string;
    }
    

    最后,吐槽一下,请求数据为啥不能老老实实的放在body里面。

    相关文章

      网友评论

          本文标题:iOS AFNetworking URL包含特殊字符处理

          本文链接:https://www.haomeiwen.com/subject/hksxqktx.html