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

  • 相关阅读:
    第三章:软件也要拼脸蛋-UI 开发的点点滴滴
    第二章:先从看得到的入手-探究活动
    第一章:开始启程-你的第一行Android代码
    367. Valid Perfect Square
    逆向工程
    lombok日志包的使用
    Mysql(一)
    数据库
    mvc+三层架构
    Maven
  • 原文地址:https://www.cnblogs.com/niit-soft-518/p/8005405.html
Copyright © 2011-2022 走看看