// url
中只能是
ASCII
码
. url
中出现汉字
,
需要进行百分号转译
.
//
百分号转译
:
// 1> Xcode 7.0
之前使用最多的一个方法
:
// urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 注意 : 首先是实例化 NSCharacterSet 定义的位置 . stringByAddingPercentEncodingWithAllowedCharacters 方法上面 .
// urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 注意 : 首先是实例化 NSCharacterSet 定义的位置 . stringByAddingPercentEncodingWithAllowedCharacters 方法上面 .
// 其次: 只有最后两个实例化方法有效.
urlString = [urlString
stringByAddingPercentEncodingWithAllowedCharacters
:[
NSCharacterSet
URLQueryAllowedCharacterSet
]];
// NSLog(@"%@",urlString);
NSURL *url = [ NSURL URLWithString :urlString];
NSURLRequest *request = [ NSURLRequest requestWithURL :url];
// 2. 发送网络请求
[[[ NSURLSession sharedSession ] dataTaskWithRequest :request completionHandler :^( NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// JSON 数据可以直接使用字符串接收 .
// 调试 JSON 数据 , 选择合适的参数接收 !
// JSON 数据的最外层 如果是 [] , 使用 数组接收 ; {} 使用字典接收 .
// JSON 中 {} 和 [] 里面的内容 : 遵循下列对应的转换关系 :
// {
// JSON 类型 OC 类型
// " " 或者 '' ---> NSString
// 数字 1 ; 2.5 ---> NSNumber
// true /false ---> BOOL 值接收 .
// }
NSLog ( @"data:%@" ,[[ NSString alloc ] initWithData :data encoding : NSUTF8StringEncoding ]);
// NSLog(@"response%@",response);
// 反序列化 : JSON --> OC
// data : 需要解析的 JSON 格式 的 二进制数据 .
NSDictionary *dict = [ NSJSONSerialization JSONObjectWithData :data options : 0 error : NULL ];
NSLog ( @"dict:%@" ,dict);
// NSLog(@"%@",urlString);
NSURL *url = [ NSURL URLWithString :urlString];
NSURLRequest *request = [ NSURLRequest requestWithURL :url];
// 2. 发送网络请求
[[[ NSURLSession sharedSession ] dataTaskWithRequest :request completionHandler :^( NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// JSON 数据可以直接使用字符串接收 .
// 调试 JSON 数据 , 选择合适的参数接收 !
// JSON 数据的最外层 如果是 [] , 使用 数组接收 ; {} 使用字典接收 .
// JSON 中 {} 和 [] 里面的内容 : 遵循下列对应的转换关系 :
// {
// JSON 类型 OC 类型
// " " 或者 '' ---> NSString
// 数字 1 ; 2.5 ---> NSNumber
// true /false ---> BOOL 值接收 .
// }
NSLog ( @"data:%@" ,[[ NSString alloc ] initWithData :data encoding : NSUTF8StringEncoding ]);
// NSLog(@"response%@",response);
// 反序列化 : JSON --> OC
// data : 需要解析的 JSON 格式 的 二进制数据 .
NSDictionary *dict = [ NSJSONSerialization JSONObjectWithData :data options : 0 error : NULL ];
NSLog ( @"dict:%@" ,dict);
}]
resume];