前两天处理iOSapp过程中(我是用swift语言写的,资料较少),被一个“字符串”搞了一晚上的时间到第二天才处理好,在此记下,望见过此文的学生有一天遇到该情况能三分钟搞定不浪费时间:

先看如下代码

func getBalance(){

let url = NSURL(string: "http://www.weather.com.cn/data/sk/101110101.html")

let data = NSData(contentsOfURL: url!)

if data != nil {

let dict: NSDictionary = (try! NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)) as! NSDictionary

let weatherInfo = dict.objectForKey("weatherinfo") as! NSDictionary

print("得到天气数据了")

var city = weatherInfo.objectForKey("city") as! String

print("得到城市名称了")

    ... ...

}

}

是不是觉得没什么,直接访问就可以了,没错,但是这只是最基本的URL地址,要是我们的地址是这样子的呢

http://183.252.21.19:81/bhys/d/api/?apiType=check&rqsJson={"cardNo":"999000002111","pwd":"000211","name":"民生卡11"}&sign=123456789

会发现我们的字符串里有双引号,参数有中文等特殊字符,这个时候,再直接访问会出现什么情况?不对,是根本访问不了,因为很显然我们需要在let url = NSURL(string: "http://......")该字符串里进行转义,用我们的斜杠/"但是转了之后还是无法通过,Xcode会报错:url is nil

因为我也是第一次接触app开发,没有OC经验,不晓得是iOS原本就不识别/转义还是swift不识别,毕竟新语言。

问题的解决是另一种“转义”——编码,将URL进行encode编码一下就可以了,上面那段URL将双引号和大括号经过encode编码如下:

http://183.252.21.19:81/bhys/d/api/?apiType=check&rqsJson=%7B%22cardNo%22:%22999000002111%22,%22pwd%22:%22pwd%22,%22name%22:%22民生卡11%22%7D&sign=123456789

这个时候不仅可以访问,还可以加参数,如下:

http://183.252.21.19:81/bhys/d/api/?apiType=check&rqsJson=%7B%22cardNo%22:%22"+IDNumber+"%22,%22pwd%22:%22"+pwdNumber+"%22,%22name%22:%22"+Name+"%22%7D&sign=123456789

记住:

  一、有编码就有解码,不过解码那是服务端的事情了,移动端开发人员要知道这件事情。

  二、上文只是提供一个思路,让遇到URL问题的同学知道有encode编码这件事,具体的转码还要看服务端的,有些服务端只提供一部分转码,如上文,只转

{"cardNo":"999000002111","pwd":"000211","name":"民生卡11"},而http://183.252.21.19:81/bhys/d/api/?apiType=check&rqsJson=没有转码,这都是可能的,还需变通,不可照搬。

iOS的URL处理的更多相关文章

  1. iOS根据Url 获取图片尺寸

    iOS根据Url 获取图片尺寸 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([i ...

  2. iOS 自定义 URL Scheme 完全指南

    http://www.cocoachina.com/industry/20140522/8514.html “”   阅读器 自定义URL Scheme 本文转自Migrant的博客,原文:<T ...

  3. iOS中URL的解码和转义问题

    在iOS开发中,使用NSURLConnection去请求google places api时,如果请求的url中包含中文,则返回的结果为空,URL不能被google识别.NSString *_urlS ...

  4. iOS 根据url生成二维码贴到底图上

    根据url 生成指定尺寸的二维码图片 UIImage * createBinaryCodeImg(const char * url ,CGFloat size) { //create binary c ...

  5. iOS:URL Scheme(完结)(18-1-3更)

    1.APP跳转 2.APP功能跳转 3.系统功能跳转 1.APP跳转 1.被打开方 设置APP的URL Types(设置位置在 “项目 - TARGETS - APP icon - info - (拉 ...

  6. ios 自定义URL Scheme 设计

    在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个 ...

  7. iOS 禁用`URL Scheme`和`Universal Link`(通用链接)

    为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...

  8. iOS 的url中含有中文解决方法

    [NSURLURLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题. 方法1: NSString* en ...

  9. iOS UIWebView URL拦截

    http://www.cocoachina.com/ios/20150626/12161.html 本文译者:candeladiao,原文:URL filtering for UIWebView on ...

随机推荐

  1. JMeter进行简单的数据库(mysql)压力测试

    1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于:    \java\jre\lib\ext 文件为:mysql-connect ...

  2. Java使用BigDecimal精确计算的简单公式计算器

    由于工作需要,写了一个使用BigDecimal运算的精确计算的计算器(然后发现其实比不用BigDecimal的并好不到哪里去) 只能做加减乘除 double类型的数字在千万级别的时候会转成科学计数法, ...

  3. 转:画图解释 SQL join 语句

    画图解释 SQL join 语句 我认为 Ligaya Turmelle 的关于SQL联合(join)语句的帖子对于新手开发者来说是份很好的材料.SQL 联合语句好像是基于集合的,用韦恩图来解释咋一看 ...

  4. JDBC连接执行MySQL存储过程报权限错误

    今天在测试项目的时候  突然就报了一个错出来. User does not have access to metadata required to determine stored procedure ...

  5. java中获取ServletContext常见方法

    http://blog.sina.com.cn/s/blog_3fe961ae0100wjnf.html 1.在javax.servlet.Filter中直接获取 ServletContext con ...

  6. BWT (Burrows–Wheeler_transform)数据转换算法

    1.什么是BWT 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_transform)将原来的文本转换为一个相似的文本,转换后使得相同的字符位置连续 ...

  7. NGUI UI Grid, two column

    NGUI UI Grid, two column, set Arrangement Horizontal, Column Limit 2.

  8. MVC4中的Display Mode简介

    本文地址:http://www.cnblogs.com/egger/p/3400076.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 今天学习MVC4时,看到一个不错的特性"vie ...

  9. JavaScript类型判断

    几种方法:typeof,instanceof,Object.prototype.toString,constructor,duck type ES6引入了一种新的原始数据类型Symbol,表示独一无二 ...

  10. uva 1658(最小费用最大流)

    题意:一个带权有向图,求起点到终点的两条路径权值之和最小,且两条路径没有公共点(除起点,终点): 分析:拆点法,将u拆成u和u',u-u'容量为1,费用为0,这样就能保证每个点只用一次,起点s-s'容 ...