iOS开发网络篇 一一 请求路径(URL)中文转码问题
当发送网络请求: 确定请求路径URL 时, 观察url中是否包含中文, 如果包含中文 需要将url中的中文进行转码操作.
注意:
上面这种情况 只针对于发送GET请求,因为GET请求的URL 包含用户名和密码. POST请求的用户名和密码 在请求体信息中. 在请求体信息中 包含中文也无须做 中文转码操作.
总结:
查看请求路径URL中是否包含中文, 如果包含中文 需要做中文转码.
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController#pragma mark ----------------------
#pragma mark Events
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{[self get];
}#pragma mark ----------------------
#pragma mark Methods
-(void)get
{NSString *urlStr = @"http://localhost:8080/MJServer/login?username=123&pwd=朝阳&method=get&type=JSON";NSLog(@"转码前: %@",urlStr);//中文转码处理urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSLog(@"转码后: %@",urlStr);//1.urlNSURL *url = [NSURL URLWithString:urlStr];//http://120.25.226.186:32812/login2?username=%E5%B0%8F%E7%A0%81%E5%93%A5&pwd=520it&type=JSONNSLog(@"url------%@",url);//2.urlrequestNSURLRequest *request = [NSURLRequest requestWithURL:url];//3.connect[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {//容错处理if (connectionError) {NSLog(@"%@",connectionError);return ;}//4.解析NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);}];}-(void)post
{//观察URL中是否有中文,如果有中文则需要转码NSString *urlStr = @"http://localhost:8080/MJServer/login";//username=小码哥&pwd=520it&type=JSON//1.urlNSURL *url = [NSURL URLWithString:urlStr];//2.urlrequestNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];//2.1 postrequest.HTTPMethod = @"POST";//2.2 bodyrequest.HTTPBody = [@"username=123&pwd=朝阳&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];//3.connect[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {//容错处理if (connectionError) {NSLog(@"%@",connectionError);return ;}//4.解析NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);}];}
@end
注意观察: 上面发送GET请求中,请求路径中包含 中文字符. 因此需要转码.
不转码的控制台打印:
转码后的打印:
iOS开发网络篇 一一 请求路径(URL)中文转码问题相关推荐
- iOS开发网络篇 一一 文件上传
下面使用两种方式来实现iOS网络中的文件上传. 注意: 文件上传要发送POST请求 使用 NSURLConnection 来实现 文件上传 使用 NSURLSession 来实现 文件上传 这两种方式 ...
- iOS开发网络篇 一一 AFN的基本使用
一.AFN发送网络请求 知识点: 1. 使用AFN来发送网络请求: 需要创建会话管理者: AFHTTPSessionManager 对象 [AFHTTPSessionManager manager] ...
- iOS开发网络篇 一一 SDWebImage框架的基本使用
SDWebImage相关资料链接: http://www.jianshu.com/p/be9a0a088feb SDWebImage的项目文件. SDWebImage框架中的一些内部细节: // 当发 ...
- iOS开发网络篇—多线程断点下载
iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...
- iOS开发网络篇—使用ASI框架进行文件下载
iOS开发网络篇-使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: 1 #import "YYView ...
- 02.iOS开发网络篇—HTTP协议
iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...
- iOS开发网络篇—数据缓存
iOS开发网络篇-数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造成以 ...
- iOS开发网络篇—搭建本地服务器
iOS开发网络篇-搭建本地服务器 一.简单说明 说明:提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提示:提前准备好的软件 apache- ...
- iOS开发网络篇—GET请求和POST请求
一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http ...
最新文章
- python写文件读文件-Python 实例:读写文件
- ES5原生api(2)
- JBoss Eclipse IDE
- java switch小程序,小程序自定义switch组件
- Linux / argv、environ 和 env 的联系
- 存储系统又慢又杂太难用?我们推荐这几本书帮你解决问题
- Eclipse配置国内镜像源
- 把javabean复制到另一个javabean 使用BeanUtils.copyProperties(a,b) 复制
- OpenCV-图像对比度
- java基本数据类型_资深大厂Java程序员,由浅入深Java学习资料,高清视频
- 20220103_数据库过程:异常业务量情况通报
- linux下解压bin文件怎么打开方式,安卓手机如何打开.bin文件?
- PCB设计敷铜时的天线效应
- dnf超时空漩涡副本路线流程图_dnf怎么打超时空漩涡 dnf超时空漩涡打法攻略
- hibernate主键生成策略native,assigned,uuid的区别
- 7种超轻量级的Linux发行版,希望能够帮助你找到适合自己的操作系统
- 鲁大师2022年Q3手机报告:OPPO ColorOS重回国产UI榜首
- CPAL脚本自动化测试 ———— Signal Wait系列函数及使用
- ✨英语学习|如何高效做英语阅读笔记
- 锁消除、锁粗化、偏向锁、自旋锁