-(IBAction)httpGetData:(id)sender{
NSURLSessionConfiguration *config1 = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSessionConfiguration *config2 = [NSURLSessionConfiguration ephemeralSessionConfiguration];
NSURLSessionConfiguration *config3 = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"id"];
NSURLSession *session1 = [NSURLSession sharedSession];
NSURLSession *session2 = [NSURLSession sessionWithConfiguration:config1];
NSURLSession *session3 = [NSURLSession sessionWithConfiguration:config1 delegate:self delegateQueue:nil];
NSString *str = @"http://localhost:8080/JuRan_20151204/admin/business_upload.do";
NSURL *url = [NSURL URLWithString:str];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//設置Header參數
[request setValue:@"testHeader" forHTTPHeaderField:@"testHeader"];
//此處發現如果Method是GET,body中放入參數提交,服務端會收不到。
//設置Body值方法一,這種方法比較簡單,爲常用方法,不過只能上送參數
// [request setHTTPMethod:@"POST"];
// NSString *bodyStr = @"access_token=xxxxx&status=微博內容";
// NSData *bodyData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
// [request setHTTPBody:bodyData];
//設置Body值方法二,這種方法比較原始,不常用,不過可以用來上傳參數和文件
NSString *BOUNDARY = @"0xKhTmLbOuNdArY";
[request setValue:[@"multipart/form-data; boundary=" stringByAppendingString:BOUNDARY] forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
//多參數上送
NSString *param1 = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n",BOUNDARY,@"name1",@"value1",nil];
[body appendData:[param1 dataUsingEncoding:NSUTF8StringEncoding]];
NSString *param2 = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n",BOUNDARY,@"name2",@"value2",nil];
[body appendData:[param2 dataUsingEncoding:NSUTF8StringEncoding]];
//多文件上傳
UIImage *image1 = [UIImage imageNamed:@"image.png"];
NSData *data1 = UIImageJPEGRepresentation(image1, 1.0);
NSString *file1 = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\";filename=\"%@\"\r\nContent-Type: application/octet-stream\r\n\r\n",BOUNDARY,@"logoFile",@"image.png",nil];
[body appendData:[file1 dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data1];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
UIImage *image2 = [UIImage imageNamed:@"image.png"];
NSData *data2 = UIImageJPEGRepresentation(image2, 1.0);
NSString *file2 = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\";filename=\"%@\"\r\nContent-Type: application/octet-stream\r\n\r\n",BOUNDARY,@"imageFile",@"image.png",nil];
[body appendData:[file2 dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data2];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
//body結束分割線
NSString *endString = [NSString stringWithFormat:@"--%@--",BOUNDARY];
[body appendData:[endString dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSURLSessionDataTask *task1 = [session3 dataTaskWithRequest:request];
NSURLSessionDataTask *task2 = [session1 dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
NSInteger responseStatusCode = [httpResponse statusCode];
NSLog(@"responseStatusCode : %ld", responseStatusCode);
[_webView loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:url];
}];
[task2 resume];
NSURLSessionDataTask *task3 = [session3 dataTaskWithURL:url];
NSURLSessionDataTask *task4 = [session2 dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"task4 %@",response);
NSDictionary *content = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];//轉換數據格式
NSLog(@"task4 %@",content);
}];
}
NSURLSession參數、文件上傳實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.