#import "ViewController.h"#import "HttpResquestHelper.h"@interface ViewController ()- (IBAction)get:(id)sender;
- (IBAction)post:(id)sender;
- (IBAction)block:(id)sender;
- (IBAction)delete:(id)sender;
@property(nonatomic,strong)NSMutableData *data;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark? -----nsurlsection注意:所有的請求都必須要用resume開啟
//get請求
- (IBAction)get:(id)sender {
//1.封裝網(wǎng)址對象
NSString *urlstring =@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
NSURL *url =[NSURL URLWithString:urlstring];
//2.設(shè)置網(wǎng)絡(luò)請求
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];
//創(chuàng)建一個(gè)session對象,他是單利方法
NSURLSession *session=[NSURLSession sharedSession];
//3.創(chuàng)建有個(gè)請求任務(wù)
NSURLSessionDataTask *task =[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *result =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
}];
[task resume];
}
- (IBAction)post:(id)sender {
//1.封裝網(wǎng)址
NSString *urlstring =@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
NSURL *url =[NSURL URLWithString:urlstring];
//2.設(shè)置post請求
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
NSString *poststring =@"?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
NSData *postdata =[poststring dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:postdata];
//? ? NSData *data =[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//? ? NSString *result =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//? ? NSLog(@"%@",result);
//3.創(chuàng)建請求任務(wù)
//創(chuàng)建一個(gè)session單利
NSURLSession *session =[NSURLSession sharedSession];
NSURLSessionDataTask *task =[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *result =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
}];
[task resume];
}
#pragma mark ------block
- (IBAction)block:(id)sender {
HttpResquestHelper *request =[HttpResquestHelper defaultmanager];
[request requestWithMrthod:@"GET" url:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" parameter:@"" complitewithdata:^(NSData *data){
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}];
}
#pragma mark? ----nsurlsessiondatatask--
//接受服務(wù)器響應(yīng)
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler{
//當(dāng)網(wǎng)絡(luò)是基于HTTP協(xié)議時(shí)response是nshttpurlresponse類型的
NSHTTPURLResponse *httpresponse =(NSHTTPURLResponse *)response;
long long length =? httpresponse.expectedContentLength;
NSLog(@"%lld",length);
//? ? NSLog(@"statusCode:%ld",httpresponse.statusCode);
//? ? NSLog(@"%@",response);
completionHandler(NSURLSessionResponseAllow);
self.data =[NSMutableData data];
}
//接收數(shù)據(jù){
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{
[self.data appendData:data];
NSString *string =[[NSString alloc]initWithData:self.data encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);
}
//完成時(shí)或者請求失敗
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
NSLog(@"123");
}
//設(shè)置代理請求
- (IBAction)delete:(id)sender {
NSString *urlstring =@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
NSURL *url =[NSURL URLWithString:urlstring];
//使用代理方法我們需設(shè)置代理,但是session的delete是只讀,想要設(shè)置得通過如下方法
NSURLSession *session =[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
//創(chuàng)建任務(wù).因?yàn)槲覀?/p>
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];
NSURLSessionDataTask *task =[session dataTaskWithRequest:request];
//NSString *result =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
//NSLog(@"%@",result);
[task resume];
NSLog(@"fffffffff");
}
封裝用的模型
#import "HttpResquestHelper.h"
static HttpResquestHelper *helper =nil;
@implementation HttpResquestHelper
+(instancetype)defaultmanager{
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
helper =[[HttpResquestHelper alloc]init];
});
return helper;
}
- (void)requestWithMrthod:(NSString *)method url:(NSString *)urlstring parameter:(NSString *)parameter complitewithdata:(BLOCK)block {
NSURL *url =[NSURL URLWithString:urlstring];
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:0];
if ([method isEqualToString:@"POST"]) {
request.HTTPMethod =@"POST";
request.HTTPBody =[parameter dataUsingEncoding:NSUTF8StringEncoding];
}
//創(chuàng)建請求任務(wù),
NSURLSession? *session =[NSURLSession sharedSession];
NSURLSessionDataTask *task =[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
block(data);
}];
[task resume];
}
@end