Get请求
//请求 URL
NSString* urlStr = [NSString stringWithFormat:@"https://www.baidu.com"];
//封装成 NSURL
NSURL *url = [NSURL URLWithString:urlStr];
//初始化 请求对象
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
//也可以这样初始化对象
//NSURLRequest* request = [NSURLRequest requestWithURL:url];
//或者写为如下形式
//NSMutableURLRequest *requestSecond = [NSMutableURLRequest initWithURL:url];
//[requestSecond setHTTPMethod:@"GET"];
//发送请求 默认为 GET 请求
//1 、获得会话对象
NSURLSession *session = [NSURLSession sharedSession];
// 2、创建请求任务
// 第一个参数:请求对象
// 第二个参数:completionHandler回调(请求完成【成功|失败】的回调)
// data:响应体信息(期望的数据)
// response:响应头信息,主要是对服务器端的描述
// error:错误信息,如果请求失败,则error有值
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(!error){
NSLog(@"请求加载成功。。。");
//说明:(此处返回的数据是JSON格式的,因此使用NSJSONSerialization进行反序列化处理)
// NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//如果是字符串则直接取出
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
} else {
NSLog(@"网络请求失败!");
}
}];
//执行任务
[dataTask resume];
Post请求
// 1.创建一个网络路径
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://kns.cnki.net/kns8/Brief/GetGridTableHtml"]];
// 2.创建一个网络请求,分别设置请求方法、请求参数(也叫请求体)
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
NSString *args = @"IsSearch=true&QueryJson=%7B%22Platform%22%3A%22%22%2C%22DBCode%22%3A%22SCDB%22%2C%22KuaKuCode%22%3A%22CJFQ%2CCDMD%2CCIPD%2CCCND%2CCISD%2CSNAD%2CBDZK%2CCCJD%2CCCVD%2CCJFN%22%2C%22QNode%22%3A%7B%22QGroup%22%3A%5B%7B%22Key%22%3A%22Subject%22%2C%22Title%22%3A%22%22%2C%22Logic%22%3A4%2C%22Items%22%3A%5B%7B%22Key%22%3A%22Expert%22%2C%22Title%22%3A%22%22%2C%22Logic%22%3A0%2C%22Name%22%3A%22%22%2C%22Operate%22%3A%22%22%2C%22Value%22%3A%22ti%3Ddna%22%2C%22ExtendType%22%3A12%2C%22ExtendValue%22%3A%22%E4%B8%AD%E8%8B%B1%E6%96%87%E5%AF%B9%E7%85%A7%22%2C%22Value2%22%3A%22%22%2C%22BlurType%22%3A%22%22%7D%5D%2C%22ChildItems%22%3A%5B%5D%7D%2C%7B%22Key%22%3A%22ControlGroup%22%2C%22Title%22%3A%22%22%2C%22Logic%22%3A1%2C%22Items%22%3A%5B%5D%2C%22ChildItems%22%3A%5B%5D%7D%5D%7D%7D&PageName=AdvSearch&DBCode=SCDB&KuaKuCodes=CJFQ%2CCDMD%2CCIPD%2CCCND%2CCISD%2CSNAD%2CBDZK%2CCCJD%2CCCVD%2CCJFN&CurPage=1&RecordsCntPerPage=20&CurDisplayMode=listmode&CurrSortField=PT&CurrSortFieldType=desc&IsSentenceSearch=false&Subject=";
request.HTTPBody = [args dataUsingEncoding:NSUTF8StringEncoding];
[request addValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"XMLHttpRequest" forHTTPHeaderField:@"X-Requested-With"];
[request addValue:@"https://kns.cnki.net" forHTTPHeaderField:@"Origin"];
[request addValue:@"https://kns.cnki.net/kns8/AdvSearch?dbprefix=CFLS&&crossDbcodes=CJFQ%2CCDMD%2CCIPD%2CCCND%2CCISD%2CSNAD%2CBDZK%2CCCJD%2CCCVD%2CCJFN" forHTTPHeaderField:@"Referer"];
[request addValue:@"gzip, deflate, br" forHTTPHeaderField:@"Accept-Encoding"];
[request addValue:@"zh-CN,zh;q=0.9" forHTTPHeaderField:@"Accept-Language"];
// 3.获得会话对象
NSURLSession *session = [NSURLSession sharedSession];
// 4.根据会话对象,创建一个Task任务
NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(!error){
NSLog(@"从服务器获取到数据");
/*
对从服务器获取到的数据data进行相应的处理
*/
//NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];
//如果是字符串则直接取出
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}else{
NSLog(@"无法从服务器获取到数据");
}
}];
//5.最后一步,执行任务,(resume也是继续执行)
[sessionDataTask resume];
目前有个问题,NSLog输出数据好像不完整。。。