美文网首页
iOS HTTP请求 URL中含有特殊字符处理

iOS HTTP请求 URL中含有特殊字符处理

作者: 轻花逐风 | 来源:发表于2019-03-22 17:59 被阅读0次

iOS HTTP请求 URL中含有特殊字符  !$&'()*+,;=  处理

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。

解决办法:

对参数做编码,代码如下:

-(NSString*)encodeUrlParam

{

    static NSString * const kAFCharactersGeneralDelimitersToEncode = @":#[]@"; // does not include "?" or "/" due to RFC 3986 - Section 3.4

    staticNSString*constkAFCharactersSubDelimitersToEncode =@"!$&'()*+,;=";

    NSMutableCharacterSet * allowedCharacterSet = [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy];

    [allowedCharacterSetremoveCharactersInString:[kAFCharactersGeneralDelimitersToEncodestringByAppendingString:kAFCharactersSubDelimitersToEncode]];

    // FIXME: https://github.com/AFNetworking/AFNetworking/pull/3028

    // return [string stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacterSet];

    staticNSUIntegerconstbatchSize =50;

    NSUIntegerindex =0;

    NSMutableString*escaped =@"".mutableCopy;

    while(index

#pragma GCC diagnostic push

#pragma GCC diagnostic ignored"-Wgnu"

        NSUIntegerlength =MIN(self.length - index, batchSize);

#pragma GCC diagnostic pop

        NSRangerange =NSMakeRange(index, length);

       range = [self rangeOfComposedCharacterSequencesForRange:range];

        NSString*substring = [selfsubstringWithRange:range];

        NSString*encoded = [substringstringByAddingPercentEncodingWithAllowedCharacters:allowedCharacterSet];

        [escapedappendString:encoded];

        index += range.length;

    }

    returnescaped;

}


相关文章

网友评论

      本文标题:iOS HTTP请求 URL中含有特殊字符处理

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