当前位置: 首页 > news >正文

URL不受支持的解决

 

在网络请求中,URL中如果包含中文或者带空格的英文, 不处理会直接崩溃 

方法一:

NSURL * url =[NSURL URLWithString:[@"http://op.juhe.cn/onebox/football/league?dtype=json&league=中超&key=90b6d18361e00ed9c28b4d14e000f4ef" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];

方法二:

[@"" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

方法三:

[@"" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 

NSURLSession * session = [NSURLSession sharedSession]; 

NSURLSessionDataTask * task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

     NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);

 }];
 [task resume];

 

注:方法二和方法三在iOS9.0之后已经放弃使用了,apple建议我们使用第一种方法。

方法一的使用:

- (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters NS_AVAILABLE(10_9, 7_0);

NSCharacterSet是字符集,在NSURL.h中可以看到下面的代码:

@interface NSCharacterSet (NSURLUtilities)

+ (NSCharacterSet *)URLUserAllowedCharacterSet NS_AVAILABLE(10_9, 7_0);

+ (NSCharacterSet *)URLPasswordAllowedCharacterSet NS_AVAILABLE(10_9, 7_0);

+ (NSCharacterSet *)URLHostAllowedCharacterSet NS_AVAILABLE(10_9, 7_0);

+ (NSCharacterSet *)URLPathAllowedCharacterSet NS_AVAILABLE(10_9, 7_0);

+ (NSCharacterSet *)URLQueryAllowedCharacterSet NS_AVAILABLE(10_9, 7_0);

+ (NSCharacterSet *)URLFragmentAllowedCharacterSet NS_AVAILABLE(10_9, 7_0);

 

 

2016-08-13

转载于:https://www.cnblogs.com/zhengxinhong/p/5768719.html

相关文章:

  • 第三方接入小记
  • 浅述WinForm多线程编程与Control.Invoke的应用
  • 容器和泛型
  • 在Java中、、三者的区别
  • maven 安装本地jar包到本地maven仓库
  • 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(3): 抓取amazon.com价格...
  • 河南多校联合训练 F 不是匹配
  • JAVA缓存技术
  • SAP PP 生产订单变更记录保存
  • 目标确定
  • spoj1812-Longest Common Substring II(后缀自动机)
  • 数据分析,了解行业
  • 加速ssh连接
  • nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)...
  • Tweak 中系统方法写入文件到根目录下面失败
  • 「译」Node.js Streams 基础
  • 【刷算法】求1+2+3+...+n
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • angular2开源库收集
  • js继承的实现方法
  • npx命令介绍
  • php面试题 汇集2
  • Sublime Text 2/3 绑定Eclipse快捷键
  • XML已死 ?
  • 闭包--闭包作用之保存(一)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 对超线程几个不同角度的解释
  • 回流、重绘及其优化
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 跨域
  • 力扣(LeetCode)357
  • 码农张的Bug人生 - 初来乍到
  • 移动端唤起键盘时取消position:fixed定位
  • ionic入门之数据绑定显示-1
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (16)Reactor的测试——响应式Spring的道法术器
  • (6)STL算法之转换
  • (JS基础)String 类型
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (理论篇)httpmoudle和httphandler一览
  • (强烈推荐)移动端音视频从零到上手(上)
  • (生成器)yield与(迭代器)generator
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)C#调用WebService 基础
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET MVC第三章、三种传值方式
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net连接MySQL的方法
  • [ Linux ] Linux信号概述 信号的产生
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798