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

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;

}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • #AFNetworking源码阅读系列 一 前言: AFNetWorking一款轻量级网络请求开源框架,基于iOS...
    Xcode_破晓阅读 2,767评论 0 0
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    FF_911阅读 5,286评论 0 3
  • IOS常用代码总结 1、设置UILabel行间距 NSMutableAttributedString* attrS...
    难却却阅读 3,720评论 0 0
  • URLEncode iOS 开发中请求访问 Http(s) 时,必须对 URL 进行转码 (Encode),如果是...
    BlessNeo阅读 5,418评论 0 0
  • eos从3块涨到了50元,涨了十多倍,btc从2w涨到了12w。eth从2000涨到5000。这段时间出现了大量的...
    龙卷风227阅读 3,991评论 0 0

友情链接更多精彩内容