zoukankan      html  css  js  c++  java
  • IOS URL无法对加号进行编码导致http请求时服务器端获取的内容中加号变成空格问题

    一、背景。

    将以下地址请求服务器时,如果postUrl中某个参数值包含符号+  那么在服务器获取到这个参数值时,其加号变成了一个空格。

    NSString *postUrl = "http地址";
    postUrl = [postUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

    二、原因。

    是因为当这个地址进行以上编码时并没有对加号进行处理,正常情况下地址中的加号应该被转码成%2B

    三、解决方法。

    [postUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]已经是IOS过时的方法,应该是存在问题的,所以IOS不建议用。

    应该采用方法:

    postUrl = [postUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\]^`{|}"]+"].invertedSet];

    其中方法[NSCharacterSet characterSetWithCharactersInString:@"#%<>[\]^`{|}"]+"]中的字符串"【#%<>[\]^`{|}"]+】用户可自定义,代表的意思是需要对这些特殊字符进行转码。里面包含了加号,当然就没问题了。

  • 相关阅读:
    GC原理---垃圾收集算法
    GC原理---对象可达判断
    散列算法和哈希表结构
    桶排序
    Spring事务梳理
    AQS
    重入锁
    CAS
    研究一下phpspider
    用php写爬虫去爬数据
  • 原文地址:https://www.cnblogs.com/niit-soft-518/p/8005405.html
Copyright © 2011-2022 走看看