NSURLSession上傳圖片和其他用法

//上傳圖片

//iOS 10 上傳圖片原生代碼

-(void)nativeiOSUpImage:(UIImage *)image

{

//此處應(yīng)設(shè)置單例?

    NSURLSessionConfiguration * onConfiguration = [NSURLSessionConfigurationdefaultSessionConfiguration];

    self.session = [NSURLSessionsessionWithConfiguration:onConfiguration delegate:selfdelegateQueue:[NSOperationQueuemainQueue]];

?//開始上傳

NSMutableURLRequest * request = [NSMutableURLRequestrequestWithURL:[NSURLURLWithString:@"http://control.blog.sina.com.cn/blog_rebuild/profile/controllers/points_action.php"]];

[request addValue:@"image/png"forHTTPHeaderField:@"Content-Type"];

[request addValue:@"text/html"forHTTPHeaderField:@"Accept"];

[request setHTTPMethod:@"POST"];

[request setCachePolicy:NSURLRequestReloadIgnoringCacheData];

[request setTimeoutInterval:20];

NSData * imagedata = UIImageJPEGRepresentation(image,1.0);//或NSData *data = UIImagePNGRepresentation(image);//一個(gè)是轉(zhuǎn)換JPEG  一個(gè)是轉(zhuǎn)換PNG  看需求



NSURLSessionUploadTask * uploadtask = [self.sessionuploadTaskWithRequest:request fromData:imagedata completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

}];

[uploadtask resume];

}

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{

NSLog(@"%@",error.description);

}

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask     *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:    (int64_t)totalBytesSent totalBytesExpectedToSend:    (int64_t)totalBytesExpectedToSend{

}

/////?GET
?// 1.創(chuàng)建一個(gè)網(wǎng)絡(luò)路徑

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://blog.sina.com.cn/s/articlelist_3095139511_0_1.html?name=%@&tell=%

",name,tell]];

// 2.創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求

NSURLRequest *request =[NSURLRequest requestWithURL:url];

// 3.獲得會(huì)話對(duì)象

NSURLSession *session = [NSURLSession sharedSession];

// 4.根據(jù)會(huì)話對(duì)象,創(chuàng)建一個(gè)Task任務(wù):

NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

    NSLog(@"從服務(wù)器獲取到數(shù)據(jù)");

             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];

}];

// 5.最后一步更米,執(zhí)行任務(wù)(resume也是繼續(xù)執(zhí)行):

[sessionDataTask resume];

?//POST
?// 1.創(chuàng)建一個(gè)網(wǎng)絡(luò)路徑

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://blog.sina.com.cn/s/articlelist_3095139511_0_1.html

"]];

// 2.創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求,分別設(shè)置請(qǐng)求方法瓦盛、請(qǐng)求參數(shù)

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];

request.HTTPMethod = @"POST";

NSString *args = [NSString stringWithFormat:@"name=%@&tell=%@",yourname,tell];

request.HTTPBody = UTF-8(args);//此處為宏定義UTF-8編碼

// 3.獲得會(huì)話對(duì)象

NSURLSession *session = [NSURLSession sharedSession];

// 4.根據(jù)會(huì)話對(duì)象运挫,創(chuàng)建一個(gè)Task任務(wù)

NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

NSLog(@"從服務(wù)器獲取到數(shù)據(jù)");

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];

}];

//5.最后一步侵俗,執(zhí)行任務(wù)痛倚,(resume也是繼續(xù)執(zhí)行)。

[sessionDataTask resume];

//代理方法

pragma mark -- NSURLSessionDataDelegate// 1.接收到服務(wù)器的響應(yīng)

-  (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler {

//【注意:此處需要允許處理服務(wù)器的響應(yīng)耸峭,才會(huì)繼續(xù)加載服務(wù)器的數(shù)據(jù)桩蓉。 如果在接收響應(yīng)時(shí)需要對(duì)返回的參數(shù)進(jìn)行處理(如獲取響應(yīng)頭信息等),那么這些處理應(yīng)該放在這個(gè)允許操作的前面±湍郑】

completionHandler(NSURLSessionResponseAllow);

}

// 2.接收到服務(wù)器的數(shù)據(jù)(此方法在接收數(shù)據(jù)過程會(huì)多次調(diào)用)

-  (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {

// 處理每次接收的數(shù)據(jù)院究,例如每次拼接到自己創(chuàng)建的數(shù)據(jù)receiveData

[self.receiveData appendData:data];

}

// 3.任務(wù)完成時(shí)調(diào)用(如果成功,error == nil)

-  (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {

if(error == nil){

    

}

else{

    NSLog(@"請(qǐng)求失敗:%@",error);

    }

}

//NSURLSessionDownloadTask:文件下載任務(wù)
// 1.創(chuàng)建網(wǎng)路路徑

  NSURL *url = [NSURL URLWithString:@"http://blog.sina.com.cn/s/articlelist_3095139511_0_1.html

"] ;

// 2.獲取會(huì)話

NSURLSession *session = [NSURLSession sharedSession];

// 3.根據(jù)會(huì)話本涕,創(chuàng)建任務(wù)

NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {

    

 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];

    NSURL *pathUrl = [NSURL fileURLWithPath:path];

    // 剪切文件

    [[NSFileManager defaultManager] moveItemAtURL:location toURL:pathUrl error:nil];

}];

// 4.啟動(dòng)任務(wù)

[task resume];

//NSURLSessionDownloadDelegate代理方法
// 1.每次寫入調(diào)用(會(huì)調(diào)用多次)

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {

// 可在這里通過已寫入的長(zhǎng)度和總長(zhǎng)度算出下載進(jìn)度

CGFloat progress = 1.0 * totalBytesWritten / totalBytesExpectedToWrite; NSLog(@"%f",progress);

}

// 2.下載完成時(shí)調(diào)用

- (void)URLSession:(NSURLSession *)session

  downloadTask:(NSURLSessionDownloadTask *)downloadTask

didFinishDownloadingToURL:(NSURL *)location {

//  這里的location也是一個(gè)臨時(shí)路徑,需要自己移動(dòng)到需要的路徑(caches下面)

NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:downloadTask.response.suggestedFilename];

[[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL fileURLWithPath:filePath] error:nil];

}

// 3.請(qǐng)求成功/失斠堤(如果成功,error為nil)

  - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {

if(error == nil){

    

}

else{

    NSLog(@"請(qǐng)求失敗:%@",error);

}

}

?

// 1.創(chuàng)建一個(gè)網(wǎng)絡(luò)路徑

  NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://172.16.2.254/php/phonelogin?yourname=%@&yourpas=%@&btn=login",yourname,yourpass]];

// 2.創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求

NSURLRequest *request =[NSURLRequest requestWithURL:url];

// 3.獲得會(huì)話對(duì)象

NSURLSession *session = [NSURLSession sharedSession];

// 4.根據(jù)會(huì)話對(duì)象偏友,創(chuàng)建一個(gè)Task任務(wù):

  NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {


    NSLog(@"從服務(wù)器獲取到數(shù)據(jù)");


             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];


}];


// 5.最后一步蔬胯,執(zhí)行任務(wù)(resume也是繼續(xù)執(zhí)行):


[sessionDataTask resume];

// 1.創(chuàng)建一個(gè)網(wǎng)絡(luò)路徑

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://172.16.2.254/php/phonelogin?yourname=%@&yourpas=%@&btn=login",yourname,yourpass]];

// 2.創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求

NSURLRequest *request =[NSURLRequest requestWithURL:url];

// 3.獲得會(huì)話對(duì)象

NSURLSession *session = [NSURLSession sharedSession];

// 4.根據(jù)會(huì)話對(duì)象对供,創(chuàng)建一個(gè)Task任務(wù):

NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {


    NSLog(@"從服務(wù)器獲取到數(shù)據(jù)");


             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];


}];


// 5.最后一步位他,執(zhí)行任務(wù)(resume也是繼續(xù)執(zhí)行):


[sessionDataTask resume];

// 1.創(chuàng)建一個(gè)網(wǎng)絡(luò)路徑

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://172.16.2.254/php/phonelogin"]];

// 2.創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求,分別設(shè)置請(qǐng)求方法产场、請(qǐng)求參數(shù)

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];


request.HTTPMethod = @"POST";


NSString *args = [NSString stringWithFormat:@"yourname=%@&yourpass=%@&btn=login",yourname,yourpass];


request.HTTPBody = [args dataUsingEncoding:NSUTF8StringEncoding];

// 3.獲得會(huì)話對(duì)象

NSURLSession *session = [NSURLSession sharedSession];

// 4.根據(jù)會(huì)話對(duì)象鹅髓,創(chuàng)建一個(gè)Task任務(wù)

NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {


NSLog(@"從服務(wù)器獲取到數(shù)據(jù)");



NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];


}];

//5.最后一步,執(zhí)行任務(wù)京景,(resume也是繼續(xù)執(zhí)行)窿冯。

[sessionDataTask resume];

// 1.創(chuàng)建一個(gè)網(wǎng)絡(luò)路徑

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://172.16.2.254/php/phonelogin"]];

// 2.創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求,分別設(shè)置請(qǐng)求方法确徙、請(qǐng)求參數(shù)

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];


request.HTTPMethod = @"POST";


NSString *args = [NSString stringWithFormat:@"yourname=%@&yourpass=%@&btn=login",yourname,yourpass];


request.HTTPBody = [args dataUsingEncoding:NSUTF8StringEncoding];

// 3.獲得會(huì)話對(duì)象

NSURLSession *session = [NSURLSession sharedSession];

// 4.根據(jù)會(huì)話對(duì)象醒串,創(chuàng)建一個(gè)Task任務(wù)

NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {


NSLog(@"從服務(wù)器獲取到數(shù)據(jù)");



NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil];


}];

//5.最后一步,執(zhí)行任務(wù)鄙皇,(resume也是繼續(xù)執(zhí)行)芜赌。

[sessionDataTask resume];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伴逸,隨后出現(xiàn)的幾起案子缠沈,更是在濱河造成了極大的恐慌,老刑警劉巖错蝴,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洲愤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡顷锰,警方通過查閱死者的電腦和手機(jī)柬赐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來官紫,“玉大人躺率,你說我怎么就攤上這事玛界。” “怎么了悼吱?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵慎框,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我后添,道長(zhǎng)笨枯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任遇西,我火速辦了婚禮馅精,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粱檀。我一直安慰自己洲敢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布茄蚯。 她就那樣靜靜地躺著压彭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渗常。 梳的紋絲不亂的頭發(fā)上壮不,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音皱碘,去河邊找鬼询一。 笑死,一個(gè)胖子當(dāng)著我的面吹牛癌椿,可吹牛的內(nèi)容都是我干的健蕊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼踢俄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼缩功!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起褪贵,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤掂之,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后脆丁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體世舰,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年槽卫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跟压。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歼培,死狀恐怖震蒋,靈堂內(nèi)的尸體忽然破棺而出茸塞,到底是詐尸還是另有隱情,我是刑警寧澤查剖,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布钾虐,位于F島的核電站,受9級(jí)特大地震影響笋庄,放射性物質(zhì)發(fā)生泄漏效扫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一直砂、第九天 我趴在偏房一處隱蔽的房頂上張望菌仁。 院中可真熱鬧,春花似錦静暂、人聲如沸济丘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摹迷。三九已至,卻和暖如春辱士,著一層夾襖步出監(jiān)牢的瞬間泪掀,已是汗流浹背听绳。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工颂碘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椅挣。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓头岔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鼠证。 傳聞我的和親對(duì)象是個(gè)殘疾皇子峡竣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • NSURLSession基本使用 簡(jiǎn)介 使用步驟使用NSURLSession會(huì)話對(duì)象創(chuàng)建Task,然后執(zhí)行Task...
    彼岸的黑色曼陀羅閱讀 982評(píng)論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理量九,服務(wù)發(fā)現(xiàn)适掰,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • NSURLSession類以及相關(guān)類為通過HTTP下載資源提供了一個(gè)API.這個(gè)API提供了一系列豐富的代理集合荠列,...
    郭苒閱讀 976評(píng)論 0 9
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,363評(píng)論 0 6
  • 1类浪、拼多多App解決了人們買商品價(jià)格高 團(tuán)購人不好湊 拼單拼不起來的問題,利用一個(gè)網(wǎng)絡(luò)平臺(tái)來進(jìn)行拼單 2肌似、該App...
    5b1d93b98018閱讀 700評(píng)論 0 0